Python真題案例之蛇形數(shù)組詳解
問題描述??
輸入一個正整數(shù)n
在n*n的方陣內(nèi)填入1,2,3,4…n*n,要求填成蛇形。(回旋的向中間收斂)
樣例輸入:
4
樣例輸出:

不必嚴格按照格式輸出,
問題分析??
蛇形填數(shù),目的是為了考驗我們對數(shù)組索引的熟悉情況,觀察可知需要從右上角開始遍歷 先向下等碰到了下限左轉(zhuǎn)然后向上然后右轉(zhuǎn),一直遍歷到最中心。這里需要對邊界進行判斷 我們對邊界判斷的時候需要有一個緩沖空間也就是說先判斷下一位置再賦值。 (如果先賦值再判斷,想往回走的話很麻煩),還有一點就是定住二維數(shù)組的一行或一列 移動另外的索引。由此我們可以寫出以下代碼。
代碼實現(xiàn)??
老規(guī)矩先上運行結果:

有了上面的思路后我們還可以進行逆時針的蛇形數(shù)組。

使用定一移一的思想我們還可以對數(shù)組進行旋轉(zhuǎn)。

蛇形數(shù)組源碼
import sys
def sn1(n):
arr=[]
for i in range(n):
arr.append([0]*n)
row=0
col=n-1
arr[row][col]=1
i=1
while i<n*n:
while row+1<n and (not arr[row+1][col]):
arr[row+1][col]=i+1
row+=1
i+=1
while col-1>-1 and (not arr[row][col-1]):
arr[row][col-1]=i+1
col-=1
i+=1
while row-1>-1 and (not arr[row-1][col]):
arr[row-1][col]=i+1
row-=1
i+=1
while col+1<n and (not arr[row][col+1]):
arr[row][col+1]=i+1
col+=1
i+=1
for i in range(n):
flag=True
for j in range(n):
if flag:
print(arr[i][j],end="")
flag=False
else:
print("\t",arr[i][j],end="",sep="")
print()
def sn2(n):
arr=[]
for i in range(n):
arr.append([0]*n)
row=0
col=n-1
arr[row][col]=i=1
while i<n*n:
while(col-1>-1 and not(arr[row][col-1])):
arr[row][col-1]=i+1
i+=1
col-=1
while(row+1<n and not(arr[row+1][col])):
arr[row+1][col]=i+1
i+=1
row+=1
while(col+1<n and not(arr[row][col+1])):
arr[row][col+1]=i+1
i+=1
col+=1
while(row-1>-1 and not(arr[row-1][col])):
arr[row-1][col]=i+1
i+=1
row-=1
for i in range(n):
flag=True
for j in range(n):
if flag:
print(arr[i][j],end="")
flag=False
else:
print("\t",arr[i][j],end="",sep="")
print()
if __name__=="__main__":
n=int(input())
print("蛇形數(shù)組如下(順時針):")
sn1(n)
print("蛇形數(shù)組如下(逆時針):")
sn2(n)
旋轉(zhuǎn)數(shù)組源碼
'''
大家都學習過矩陣,今天呢咱們將n*n類型的字符矩陣進行向左的90°旋轉(zhuǎn)
'''
#生成全為零的矩陣
arr=[]
n=int(input())
for i in range(n):
arr.append([0]*n)
#蛇形矩陣
row=0
col=n-1
arr[row][col]=i=1
while i<n*n:
while row+1<n and not arr[row+1][col]:
arr[row+1][col]=i+1
i+=1
row+=1
while col-1>=0 and not arr[row][col-1]:
arr[row][col-1]=i+1
i+=1
col-=1
while row-1>=0 and not arr[row-1][col]:
arr[row-1][col]=i+1
i+=1
row-=1
while col+1<n and not arr[row][col+1]:
arr[row][col+1]=i+1
i+=1
col+=1
print("旋轉(zhuǎn)前如下:")
for temp in arr:
print(temp)
print()
print("旋轉(zhuǎn)后如下(旋轉(zhuǎn)90°):")
for i in range(4):
flag=True
for j in range(4):
if flag:
print(arr[j][3-i],end="")
flag=False
else:
print(" ",arr[j][3-i],end="")
print()
print("旋轉(zhuǎn)后如下(旋轉(zhuǎn)180°):")
for i in range(4):
flag=True
for j in range(4):
if flag:
print(arr[3-i][3-j],end="")
flag=False
else:
print(" ",arr[3-i][3-j],end="")
print()
到此這篇關于Python真題案例之蛇形數(shù)組詳解的文章就介紹到這了,更多相關Python 蛇形數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python在windows調(diào)用svn-pysvn的實現(xiàn)
本文主要介紹了python在windows調(diào)用svn-pysvn的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02
pycharm的debug調(diào)試以及異常,Python中錯誤的處理過程
這篇文章主要介紹了pycharm的debug調(diào)試以及異常,Python中錯誤的處理過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Python開發(fā)寶典CSV JSON數(shù)據(jù)處理技巧詳解
在Python中處理CSV和JSON數(shù)據(jù)時,需要深入了解這兩種數(shù)據(jù)格式的讀取、寫入、處理和轉(zhuǎn)換方法,下面將詳細介紹如何在Python中處理CSV和JSON數(shù)據(jù),并提供一些示例和最佳實踐2023-11-11

