蛇形矩陣,如:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
從右上角大回環,其實挺簡單,思路想明白了就順了。
這樣的矩陣可以看做二維陣列,python對陣列的寫法很麻煩,用numpy生成就簡單多了
myarray = np.zeros((n, n), dtype=np.int16)
有了陣列矩陣,接著分析規律,從右上角開始為1,依次向下迴圈,所以就是行+1,列不變;當行到最下面時,迴圈變為列-1,行不變,依次後面是行-1,列不變,最後列+1,行不變,完成一圈大迴圈。
根據這樣的規律,再依次在內部進行小迴圈,直到所有位置的資料都不為0,就算完成。
# 為什麼是不為0,因為我在初始化矩陣的時候用的zeros函式,給每乙個位置都賦的初值0。
# -*- coding: utf-8 -*-
"""created on mon may 28 13:37:32 2018
@author: jeremyjone
"""import pprint
import numpy as np
def main():
n = int(input('請輸入數字:'))
myarray = np.zeros((n, n), dtype=np.int16)
x, y = 0, n - 1
res = myarray[x][y] = 1
while(res < n * n):
while(x + 1 < n and (not myarray[x + 1][y])):
res += 1
x += 1
myarray[x][y] = res
while(y - 1 >= 0 and not myarray[x][y - 1]):
res += 1
y -= 1
myarray[x][y] = res
while(x - 1 >= 0 and not myarray[x - 1][y]):
res += 1
x -= 1
myarray[x][y] = res
while(y + 1 < n and not myarray[x][y + 1]):
res += 1
y += 1
myarray[x][y] = res
pprint.pprint(myarray)
print(myarray)
if __name__ == '__main__':
main()
pprint和print差不多,略有差別,有興趣的自己體會吧。 用python寫乙個restful API
coding utf 8 package.module python實現的圖書的乙個restful api.restful api 一般模式 get select 從伺服器取出資源 一項或多項 post create 在伺服器新建乙個資源。put update 在伺服器更新資源 客戶端提供改變後的完...
乙個用GPU寫的矩陣乘法
這個過程相當繁瑣,個人認為有優化的可能 先說一下思路,矩陣相乘a矩陣乘b矩陣相當於a矩陣和b矩陣的轉置做內積.所以我就先把b矩陣做了轉置,再做內積.其中有兩個核函式是在主函式中執行的,先執行轉置,再執行乘法.再乘法函式中又巢狀了乙個內積函式.這樣充分的利用了並行化.如圖所示 以3 3矩陣為例.我先開...
python寫乙個服務 Python寫乙個服務
coding utf 8 import json from urllib.parse import parse qs from wsgiref.server import make server 定義函式,引數是函式的兩個引數,都是python本身定義的,預設就行了。定義檔案請求的型別和當前請求成功...