0分求助

P1189 SEARCH

@[JimmyDong](/user/464764) 注意如下地方: - 第 50~56 行: ```cpp if(ch[t.px-i][t.py]!='X') { now.px=t.px-i; now.py=t.py; now.step=k; q.push(now); } ``` 您只考虑了 `ch[t.px-i][t.py]` 不等于 `X` 的情况,并没有考虑它等于 `X` 的情况。 如果它等于 `X` ,那么就不能继续往下搜了,此时应该 `break`。 ```cpp if(ch[t.px-i][t.py]!='X') { now.px=t.px-i; now.py=t.py; now.step=k; q.push(now); }else break; ``` 还有 3 个循环,也是一样的道理。 - 第 18 行: `chans[i][j]=ch[i][j];` 您直接把 `ch` 数组赋值到 `chans` 数组中,这意味着最初的起点也会当做可以走到的位置输出。起点应该赋值为 `.`。 ```cpp if(ch[i][j]!='*')chans[i][j]=ch[i][j]; else chans[i][j]='.'; ``` 暂时发现了这些问题。
by xiongzecheng @ 2023-06-10 19:26:59


@[xiongzecheng](/user/775277) 谢谢!
by JimmyDong @ 2023-06-17 11:53:05


|