@[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