题目链接
校OJ每日一题:这题主要还是考察我们对方向控制的掌握,这种类似的思想再迷宫问题种也是经常运用的,需要熟练掌握, 需要注意的是,这题和洛谷上的蛇形方阵(P5731)很像, 不过两者的输出有略微差别
目录
一、问题重述
1.题目描述
2.输入格式
3.输出格式
4.输入输出样例
5.说明/提示
二、大概思路
三、完整AC代码
问题重述
题目描述
输入格式
输出格式
输入输出样例
#样例1
输入:3 3
输出:
1 2 3
8 9 4
7 6 5
说明/提示
大概思路
这题是比较简单的,只需要通过pos改变控制方向,在if判断那里需要注意,判断某个点是否走过一定要放在最后,因为or判断到真就不会在继续后面的判断了,这样也就不会造成溢出报错(IndexError: list index out of range)
完整AC代码
n = int(input())
phalanx = [[0 for j in range(n)] for i in range(n)]
pos = [[0, 1], [1, 0], [0, -1], [-1, 0]] # 改变位置的数组 0右1下2左3右
x = y = 0
d = 0 # d记录头朝向
for number in range(1, n * n + 1):
phalanx[x][y] = number
tx = x + pos[d][0]
ty = y + pos[d][1]
if tx < 0 or tx > n - 1 or ty < 0 or ty > n - 1 or phalanx[tx][ty]: # 如果越界或以前填过
d = (d + 1) % 4 # 头往右转
x += pos[d][0]
y += pos[d][1]
for i in range(n):
for j in range(n):
print("%d " %(square[i][j]), end="")
# print("%3d" % phalanx[i][j], end="") # 洛谷输出
print()
# 第二种输出
# for i in range(n):
# print(*(phalanx[i]))