奇怪

P1443 马的遍历

@[chair0114](/user/908638) 其实特判的做法没有问题,有问题的是你的特判(有点绕哈) 你的 bfs 的做法我看懂了,你将用 $0$ 步可到达的地方视为不可到达,这个想法是没错的。但是,这句特判: ```cpp if(s[i][j]==0&&i!=q&&j!=p) ``` 是错误的。 首先,你想判断的是,当前遍历的不是起点且 $s$ 数组为 $0$。但是,起点的判断错误。若 $q = p = 1$ 且 $i = 1, j = 2, s_i,_j = 0$ 时,自己可以想到,仍然无法进入判断语句。这时输出就会错误。 因此把特判改为: ```cpp if (s[i][j] == 0 && !(i == q && j == p)) ``` 或: ```cpp if (s[i][j] == 0 && (i != q || j != p)) ``` 注意操作符运算级。 不知道我在你发的上一篇帖子后面补充的格式内容你看了没有,说实话,中国是因为文革导致信息技术在细节又不起眼的地方做得很差。老外的代码都是会打空格的(连 @[kkksc03](/user/1) 的《深基》里都打了空格,我看的大约 $20$ 余本外国编程书里都打了空格)。空格能有效增加代码可读性。 给你几个网站: [网站 1(要往下翻)](https://www.zhihu.com/question/398008181/answer/2863824065) [网站 2(百度文库)](https://wenku.baidu.com/view/929c8f4f3269a45177232f60ddccda38366be179.html?_wkts_=1689687728512&bdQuery=%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BB%A3%E7%A0%81%E8%A6%81%E5%8A%A0%E7%A9%BA%E6%A0%BC) [网站 3(有点长)](https://www.yzktw.com.cn/post/157083.html) [网站 4(耐心看完,因为它是以反衬形式写得)](https://blog.csdn.net/qing_gee/article/details/106800568)
by CleanIce @ 2023-07-18 21:44:55


@[CleanIce](/user/821660) 简单来说就是方法想对了,但是程序写错了
by dmx7u19x @ 2023-07-26 19:47:35


|