輸入乙個數字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...