问题描述🪐
问题分析🪐
代码实现🪐
蛇形数组源码
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("蛇形数组如下(顺时针):")
sn1(n)
print("蛇形数组如下(逆时针):")
sn2(n)
旋转数组源码
'''
大家都学习过矩阵,今天呢咱们将n*n类型的字符矩阵进行向左的90°旋转
'''
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("旋转前如下:")
for temp in arr:
print(temp)
print()
print("旋转后如下(旋转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("旋转后如下(旋转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()