hebabshan 2023-03-30 16:28 采纳率: 75%
浏览 29
已结题

关于洛谷python答题出现re

洛谷 python答题 re和ac 同时出现如何解决

img

img

n,m,x1,y1=map(int,input().split())
st=[[0]*n for i in range(m)]
for i in range(n):
    for j in range(m):
        st[i][j]=[i,j,-1]
st[x1-1][y1-1][2]=0
xx=[-2,-2,2,2,-1,-1,1,1]
yy=[-1,1,-1,1,2,-2,2,-2]
q=[st[x1-1][y1-1]]
while q:
    ji=q.pop(0)
    for i in range(8):
        a=ji[0]+xx[i]
        b=ji[1]+yy[i]
        if a<0 or a>n-1 or b<0 or b>m-1:
            continue
        if st[a][b][2]!=-1:
            continue
        st[a][b][2]=st[ji[0]][ji[1]][2]+1
        q.append(st[a][b])
for i in range(n):
    for j in range(m):
        print(st[i][j][2],end='\t')
    print('')


  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2023-03-31 02:12
    关注

    RE是Runtime Error,一般是指代码报错了
    分享一下我的AC代码

    n, m, x, y = map(int, input().split())
    
    ans = [[-1]*m for _ in range(n)]
    ans[x-1][y-1] = 0
    from collections import deque
    q = deque()
    q.append((x-1, y-1))
    d = ((-2, 1), (-1, 2), (1, 2), (2, 1), (2, -1), (1, -2), (-1, -2), (-2, -1))
    while q:
        r, c = q.popleft()
        for x, y in d:
            xx = r + x
            yy = c + y
            if 0 <= xx < n and 0 <= yy < m and ans[xx][yy] < 0:
                ans[xx][yy] = ans[r][c] + 1
                q.append((xx, yy))
    for i in ans:
        print(*i)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    hebabshan 2023-03-31 08:33

    太感谢你了,我的错误是在定义步数的那个二维列表把n,m搞反了,你的代码也让我学会了很多其他的,真的太感谢了,python做完算法题目真的很难找到一个答案呐

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月31日
  • 创建了问题 3月30日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部