要是马能吃到(0,0)怎么办啊。。

P1002 [NOIP2002 普及组] 过河卒

那就无解呀-0
by KaisuoShutong @ 2018-07-12 15:35:11


答案为0啊
by Farblos @ 2018-07-12 15:38:06


顺便请各位大佬帮改代码,对1,2,5点 ```cpp #include<bits/stdc++.h> using namespace std; int n,m,xh,yh; long long b[21][21]; bool at[21][21]; void att (int,int); int main() { scanf("%d%d%d%d",&n,&m,&xh,&yh); att(xh,yh); for (int i=1;i<=n;++i) if (!at[i][0]) b[i][0]=1; for (int i=1;i<=m;++i) if (!at[0][i]) b[0][i]=1; for (int i=1;i<=n;++i) for (int j=1;j<=m;++j) { if (!at[i][j]) b[i][j]=b[i][j-1]+b[i-1][j]; } cout<<b[n][m]; return 0; } void att (int x,int y) { at[x][y]=true; at[x+1][y+2]=true; at[x+2][y+1]=true; if (x>=2&&y>=1) at[x-2][y-1]=true; if (x>=2) at[x-2][y+1]=true; if (x>=1) at[x-1][y+2]=true; if (y>=1) at[x+2][y-1]=true; if (y>=2) at[x+1][y-2]=true; if (x>=1&&y>=2) at[x-1][y-2]=true; } ``` 还有,把输出换成printf为什么会在输出前多打一空格??
by 4kilometers @ 2018-07-12 15:40:52


因为换的时候是printf("%d",b[n][m]); %d前后是控制格式的 如果多打了空格就会多加
by 斗神·君莫笑 @ 2018-07-12 16:17:21


@[斗神·君莫笑](/space/show?uid=49644) 哟西,谢谢大佬指点。大佬能否帮改下代码?
by 4kilometers @ 2018-07-12 16:19:30


@[执笔、捃尘](/space/show?uid=18535) 你的代码在初始化上左两行时有问题 ```cpp for(int i=1;i<=n;++i) if(!at[i][0]) b[i][0]=1; for(int i=1;i<=m;++i) if (!at[0][i]) b[0][i]=1; ``` 给你一组at的数据 0 0 0 0 1 0 0———— 1———— 0———— 0———— 0———— 这样你的循环在碰到1以后仍然继续 明显违背题意 所以应该是 ```cpp for(int i=1;i<=n;++i){ if(at[i][0])break; b[i][0]=1; } for(int i=1;i<=m;++i){ if(at[0][i])break; b[0][i]=1; } ```
by 斗神·君莫笑 @ 2018-07-12 16:33:32


@[斗神·君莫笑](/space/show?uid=49644) 多谢大佬帮本蒟蒻达成AC100!!(见笑)
by 4kilometers @ 2018-07-12 16:48:42


|