演算法題目 螺旋輸出

2021-10-07 01:53:56 字數 1202 閱讀 3167

輸入乙個數字n,3 < n < 20,輸出乙個n*n的矩陣,這個矩陣要求最外層是x,第二層是y,之後的層為0,1,2,3,4,5,6,7。比如輸出5,輸出為

x x x x x

x y y y x

x y 0 y x

x y y y x

x x x x x

這是乙個對稱列印的題目,既然是對稱列印,就可以把它按照對稱性分解成小的部分,然後輸出小的部分,然後按照對稱性去輸出其餘的部分。

看題目和樣例,可以看到整個輸出是左右、上下對稱的,所以只需要將其1/4部分進行輸出就行。

再去看題目,因為是往內巢狀的,也就是最左上部分往右下開始變化,則變化對應為

(0,

0) x(0

,1) x(0,

2) x(1

,0) x(1,

1) y(1

,2) y(2,

0) x(2

,1) y(2,

2)0

可已看出,越外層,其下標越小,越內層,下標越大,從外到裡,只需要對列表的下標從小到大進行取就行,而每次取值都是在x座標和y座標的最小值中取的。

這只是其中一部分,對於另外一部分,使用座標代換代換成相應座標即可。

用python進行實現

a =

['x'

,'y',0

,1,2

,3,4

,5,6

,7]def

charout

(n):

for i in

range

(n):

for j in

range

(n):

x = n-i-

1if x >=

int(n/2)

: x = i

y = n-j-

1if y >=

int(n/2)

: y = j

index =

min(x,y)

print

(a[index]

, end=

' ')

print(''

)if __name__ ==

"__main__"

: charout(

4)

輸出螺旋矩陣

螺旋矩陣 是指乙個呈螺旋狀的矩陣,它的數字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此迴圈。如圖1 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 輸出螺旋矩陣 author zhanliqing ...

輸出螺旋矩陣

關於螺旋矩陣的說法不一,這裡指的是形如 21 22.20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13 的矩陣。問題有兩個 1.程式設計實現輸出這個矩陣 2.設1點的座標是 0,0 x方向向右為正,y方向向下為正.例如 7的座標為 1,1 2的座標為...

java螺旋輸出

public class luoxuan,int intarr new int,int intarr new int,int rightturnat intarr 0 length 1 int downturnat intarr.length 1 int leftturnat 0 int uptur...