不懂就问

P1002 [NOIP2002 普及组] 过河卒

~~标题是 smg~~
by 一只书虫仔 @ 2020-05-06 07:26:27


```cpp b[mx][my]=-1; b[mx-2][my-1]=-1; b[mx-1][my-2]=-1; b[mx-2][my+1]=-1; b[mx-1][my+2]=-1; b[mx+2][my-1]=-1; b[mx+1][my-2]=-1; b[mx+2][my+1]=-1; b[mx+1][my+2]=-1; ``` 数组下标不能是 $-1$ 啊,所以不能设 $[1][1]$ 为 $1$
by 一只书虫仔 @ 2020-05-06 07:27:57


@[QIANXUN_](/user/316149) 您的代码里的下标出现了`mx-2`和`my-2`,这显然在mx=1或my=1的时候出现负坐标
by vectorwyx @ 2020-05-06 07:41:26


其实可以这样写: ```cpp bool fun(int x,int y){ if(x==hm&&y==hn) return true; int a=abs(x-hm),b=abs(y-hn); return a+b==3&&a>0&&b>0; } ```
by Starlit_Night @ 2020-05-06 07:48:31


@[vectorwyx](/user/238408) mx,my,ex,ey都加了2的,防止出现负坐标
by QIANXUN_ @ 2020-05-06 09:34:27


我搞不懂的就是 ```cpp // for(int i=2;i<=ex;i++){ // if(b[i][2]!=-1) a[i][2]=1; // } // // for(int i=2;i<=ey;i++){ // if(b[2][i]!=-1) a[2][i]=1; // } a[2][2]=1; ``` 这里打注释的为什么有错,而a[2][2]=1才可以
by QIANXUN_ @ 2020-05-06 09:36:24


例如这样: `. . @ . .` (`@` 为马,`.` 为空地) 注释代码跑出来是 `1 1 0 1 1` 正解代码跑出来是 `1 1 0 0 0`
by H6_6Q @ 2020-05-06 09:43:45


|