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

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

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

使用定一移一的思想我們還可以對(duì)數(shù)組進(jìn)行旋轉(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ù)組如下(順時(shí)針):")
sn1(n)
print("蛇形數(shù)組如下(逆時(shí)針):")
sn2(n)
旋轉(zhuǎn)數(shù)組源碼
'''
大家都學(xué)習(xí)過矩陣,今天呢咱們將n*n類型的字符矩陣進(jì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()
到此這篇關(guān)于Python真題案例之蛇形數(shù)組詳解的文章就介紹到這了,更多相關(guān)Python 蛇形數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作示例
這篇文章主要介紹了Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作,涉及Python針對(duì)文件的讀取、遍歷、比較進(jìn)而達(dá)到差異對(duì)比的相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
python調(diào)用騰訊云實(shí)名認(rèn)證接口辨別身份證真假
這篇文章主要為大家介紹了python辨別身份真假之騰訊云身份證實(shí)名認(rèn)證接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python利用機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)垃圾郵件的識(shí)別
今天教大家利用簡(jiǎn)單的機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)垃圾郵件識(shí)別,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Python爬蟲進(jìn)階之爬取某視頻并下載的實(shí)現(xiàn)
這篇文章主要介紹了Python爬蟲進(jìn)階之爬取某視頻并下載的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python實(shí)戰(zhàn)之異步獲取中國(guó)天氣信息
這篇文章主要介紹了如何利用Python爬蟲異步獲取天氣信息,用的API是中國(guó)天氣網(wǎng)。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手試一試2022-03-03
Python學(xué)習(xí)之線程池與GIL全局鎖詳解
本文我們將學(xué)習(xí)線程池的創(chuàng)建與全局鎖。線程池的創(chuàng)建于進(jìn)程池的原理是相同的;關(guān)于GIL全局鎖,暫時(shí)沒有代碼上的練習(xí),而是對(duì)其概念進(jìn)行一個(gè)簡(jiǎn)單的啟蒙,感興趣的可以了解一下2022-04-04
python 如何利用argparse解析命令行參數(shù)
這篇文章主要介紹了python 利用argparse解析命令行參數(shù)的步驟,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09
asyncio 的 coroutine對(duì)象 與 Future對(duì)象使用指南
asyncio是Python 3.4版本引入的標(biāo)準(zhǔn)庫(kù),直接內(nèi)置了對(duì)異步IO的支持。asyncio的編程模型就是一個(gè)消息循環(huán)。今天我們就來詳細(xì)討論下asyncio 中的 coroutine 與 Future對(duì)象2016-09-09
Pandas+openpyxl進(jìn)行Excel處理詳解
這篇文章主要為大家詳細(xì)介紹了如何使用pandas和openpyxl庫(kù)對(duì)多個(gè)Excel文件進(jìn)行多種處理的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-02-02

