You need to enable JavaScript to run this app. C语言程序迁移至Python3后运行结果异常的问题求助
优惠活动
大模型
产品
解决方案
定价
更多

C语言程序迁移至Python3后运行结果异常的问题求助

问题根因

你代码的核心差异是break的作用范围不匹配:

  • C版本中switch分支内的break仅跳出switch结构,外层while循环会继续执行,会沿着格子指示的方向持续遍历,直到出界或者碰到当前z标记过的格子
  • Python版本中每个方向判断分支末尾的break会直接跳出外层while循环,导致每个起点仅执行一步就终止遍历,和原逻辑完全不符

修正方案

删除Python代码中每个方向分支末尾的break,同时可以删掉冗余的elif判断(因为b[i1][j1]==z的分支已经提前break,后续逻辑默认是b[i1][j1]!=z的情况),修正后的核心逻辑如下:

i1=0
j1=0
counter=0
flag=True
z=0    
for i in range(n):
    for j in range(m):
        i1=i
        j1=j
        z+=1
        while i1>=0 and i1<n and j1>=0 and j1<m and flag:
            if a[i1][j1] == 'D':
                if b[i1][j1] == z:
                    flag = False
                    break
                b[i1][j1] = z
                i1 += 1
            elif a[i1][j1] == 'U':
                if b[i1][j1] == z:
                    flag = False
                    break
                b[i1][j1] = z
                i1 -= 1
            elif a[i1][j1] == 'L':
                if b[i1][j1] == z:
                    flag = False
                    break
                b[i1][j1] = z
                j1 -= 1
            elif a[i1][j1] == 'R':
                if b[i1][j1] == z:
                    flag = False
                    break
                b[i1][j1] = z
                j1 += 1
        if not flag:
            counter += 1
        flag = True

修正后逻辑和C版本完全一致,运行结果会匹配。

内容的提问来源于stack exchange,提问作者FoolingAround

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 21:06:08