Python練習(16)--回形矩陣-難-沒做出來
阿新 • • 發佈:2018-11-11
問題描述
列印回型矩陣如圖:
1 2 3 4 5 6 7 8
28 29 30 31 32 33 34 9
27 48 49 50 51 52 35 10
26 47 60 61 62 53 36 11
25 46 59 64 63 54 37 12
24 45 58 57 56 55 38 13
23 44 43 42 41 40 39 14
22 21 20 19 18 17 16 15
分析;
難,一片混亂。肯定要用迴圈的,想著設兩個迴圈表示行和列,但又試了一下行不通,所以設了一個,但一個又沒辦法按順序輸出,所以搞成了下面的樣子,搞不下去了…
借鑑程式碼
def snakeNum(n): a = [[0 for i in range(n)] for j in range(n)] p = 0 q = n - 1 t = 1 while p < q: for i in xrange(p, q): a[p][i] = t t += 1 for i in xrange(p, q): a[i][q] = t t += 1 for i in xrange(q, p, -1): a[q][i] = t t += 1 for i in xrange(q, p, -1): a[i][p] = t t += 1 p += 1 q -= 1 if p == q: a[p][p] = t for i in range(n): print a[i] snakeNum(8)
看完直呼精妙,總結:
1 一定要找到規律,規律是具有重複性的,從前面的例子找到,後面的一定適用,只是條件需要改變一下;
2 引數選擇問題,感覺迴圈的引數能少就少,儘量不要給自己增加障礙;
3 迴圈的範圍這個東西,不一定需要用變數來表示,如上題,僅用兩個常量足矣,只需要增減常量就能滿足需要。
還有很遠的路要走呢。前陣子做得題都是easy,繼續上下求索吧ヾ(◍°∇°◍)ノ゙
參考https://blog.csdn.net/u010019717/article/details/51450965#1-回型矩陣-中