橙白時光OJ 1032 蛇形填數
阿新 • • 發佈:2018-12-12
橙白時光OJ 1032 蛇形填數
描述
在nn方陳裡填入1,2,…,nn,要求填成蛇形。例如n=4時方陣為:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
輸入
直接輸入方陣的維數,即n的值。(n<=100)
輸出
輸出結果是蛇形方陣。
解題思路:
先列出一個矩陣,並用0將其填充完整
對於矩陣中的每個元素,與之相鄰的不外乎上,下,左,右四個方向。對於n=3的矩陣,起始值位置座標為(0,2),它應向下進行移動,所以首座標+1。以此類推,左移動時,末座標-1;上移動時,首座標-1;右移動時,末座標+1。
而後通過while迴圈語句限制位置的移動即可(保證不會超出矩陣邊界且下一個移動位置處沒有被填充)。
收穫:
矩陣生成並且用0填充完整、用while語句進行限制填充數字。
程式碼為
def j(n): l=[[0 for i in range(n)] for j in range(n)] return l n=int(input()) l=j(n) i,j=0,n-1 a=l[i][j]=1 while a<n*n: #down while i+1<n and l[i+1][j]==0: a += 1 i += 1 l[i][j]=a #left while -1<j-1 and l[i][j-1]==0: a += 1 j -= 1 l[i][j]=a #up while -1<i-1 and l[i-1][j]==0: a += 1 i -= 1 l[i][j]=a #right while j+1<n and l[i][j+1]==0: a += 1 j += 1 l[i][j]=a for i1 in l: for j1 in i1: print(j1,end=' ') print('')