|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wp231957 于 2022-2-17 15:43 编辑
- def foo(m:int,n:int,sx:int,sy:int)->None:
- #初始化数组 暂用列表代替
- a=[[0 for i in range(n)] for j in range(m)]
- dx=[-1,0,1,0]
- dy=[0,1,0,-1] # dx,dy用于调整方向
- x=sx
- y=sy
- if x==m-1 and y==0: #左下角
- d=0
- if x==0 : #左上角或者右上角
- d=1
- if x>0 and y>0: #右下角
- d=3
- for q in range(1,m*n+1):
- a[x][y]=q
- ax=x+dx[d]
- by=y+dy[d] #ax,by 记录要移动到的位置
- if ax<0 or ax>=m or by<0 or by>=n or a[ax][by]: #边界处理,满足任意一种条件 即越界,需要改变方向
- d=(d+1)%4 #顺时针改变方向
- ax=x+dx[d]
- by=y+dy[d]
- x=ax
- y=by
- for x in range(m):
- for y in range(n):
- print("%4d"%a[x][y],end="")
- print()
- print("--------演示起始位置在左上角--------------")
- foo(5,5,0,0)
- print("---------演示起始位置在左下角-------------")
- foo(5,4,4,0)
- print("---------演示起始位置在右上角-------------")
- foo(4,7,0,6)
- print("---------演示起始位置在右下角-------------")
- foo(8,5,7,0) #这里错了,猜猜看 应该如何改
复制代码
|
评分
-
查看全部评分
|