556. 蛇形矩阵

题目链接
校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]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值