如何解决你能检查我的python代码并纠正它们吗?它与算法问题实现有关
在数组(5,5)中
(1,1) (1,2) (1,3) (1,4) (1,5)
(2,1) (2,2) (2,3) (2,4) (2,5)
(3,1) (3,2) (3,3) (3,4) (3,5)
(4,1) (4,2) (4,3) (4,4) (4,5)
(5,1) (5,2) (5,3) (5,4) (5,5)
我们从 (1,1) / 'L' 表示'向左移动 1' / 'R' 的意思是'向右移动 1' / 'U' 的意思是 '向上移动 1 / 'D' 表示'向下移动 1 /
如果你把 / 5 / / 然后你会得到 (1,3)
如果你把 / 5 / 研发 / 然后你会得到 (2,3)
如果你把 / 5 / R R D L / 然后你会得到 (2,2)
但是如果你把 / 5 / R R U / 那么你会得到 (1,3) 而不是 (0,3) / 即使你把'U'(去上边),也没有办法去。 / 所以答案不是 (0,3),而是 (1,3) /
#-------------------------------------------
n=int(input('insert n : '))
x,y=0,0
run=input('move plan : ').split()
for r in run:
if r=='L':
if y==0:
continue
else:
y-=1
elif r=='R':
if y==n-1:
continue
else:
y+=1
elif r=='U':
if x==0:
continue
else:
x-=1
elif r=='D':
if x==n-1:
continue
else:
x+=1
else:
continue
print(x+1,y+1)
#---------------------------------------------- -------------------------------------
以上是运行良好的正确代码,我最初打算实现。 为了得到这个代码,我尝试了很多次来实现代码。 这是代码运行不佳,但我不知道下面这段代码有什么问题 .你能更正代码以顺利运行吗?
#---------------------------------------------- ---------------------------------------
n=int(input('insert n : '))
array=[[0 for i in range(n)] for j in range(n)]
array[0][0]=1
run=input('move plan : ').split()
for r in run:
for i,j in zip(range(n),range(n)):
if r=='L' and array[i][j]==1:
if j==0:
continue
else:
array[i][j],array[i][j-1]=array[i][j-1],array[i][j]
elif r=='R' and array[i][j]==1:
if j==n-1:
continue
else:
array[i][j],array[i][j+1]=array[i][j+1],array[i][j]
elif r=='U' and array[i][j]==1:
if i==0:
continue
else:
array[i][j],array[i-1][j]=array[i-1][j],array[i][j]
elif r=='D' and array[i][j]==1:
if i==n-1:
continue
else:
array[i][j],array[i+1][j]=array[i+1][j],array[i][j]
else:
continue
for i in range(n):
print(array[i])
"""
put
5
R R R U D D
out
3 4
"""
问题是 - 当我运行代码时,它停在位置 (1,2)...
解决方法
以下行没有意义:
for i,j in zip(range(n),range(n)):
-
您已经在循环移动,因此不需要其他(嵌套)循环:每个移动只会执行一个动作。
-
这个循环将产生一对
i
和j
,其中包含i == j
。所以它让你走在网格的对角线上。你没有理由这样做。
您应该在外循环开始之前将 i
和 j
初始化为零 ,然后在 if
条件内您应该更新 {{1 }} 或 i
(或两者都不是)取决于移动。
顺便说一句:您决定创建矩阵并用 1 标记单元格。将该矩阵保存在内存中有助于可视化您所采用的路径,但最终它对算法来说并不是必不可少的。本质上,您只需要跟踪坐标;为了调试,你可以输出那些而不是矩阵。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。