60分

P1002 [NOIP2002 普及组] 过河卒

@[sdzx](/user/197498) 哎呦,你和我的问题一样呢
by Jaim @ 2020-08-16 19:53:32


@[sdzx](/user/197498) a-2,b-2 可能数组越界
by xutongwei @ 2020-08-16 20:03:04


@[xutongwei](/user/223588) 谢谢,问题 还在,还是60分。3和4过不了……难道这就是人生吗? ```cpp #include<iostream> #include<cstdio> using namespace std; int main() { unsigned long long a,b,n,m,q[31][31]; bool ma[31][31]={0}; scanf("%llu%llu%llu%llu",&n,&m,&a,&b); a+=10; b+=10; n+=10; m+=10; //边界 for(unsigned long long i=10;i<=n;i++) q[i][10]=1; for(unsigned long long i=10;i<=m;i++) q[10][i]=1; //马的控制点 ma[a][b]=1; q[a][b]=0; ma[a+1][b+2]=1; q[a+1][b+2]=0; ma[a-1][b+2]=1; q[a-1][b+2]=0; ma[a+2][b+1]=1; q[a+2][b+1]=0; ma[a-2][b+1]=1; q[a-2][b+1]=0; ma[a+1][b-2]=1; q[a+1][b-2]=0; ma[a-1][b-2]=1; q[a-1][b-2]=0; ma[a+2][b-1]=1; q[a+2][b-1]=0; ma[a-2][b-1]=1; q[a-2][b-1]=0; //递推 for(unsigned long long i=11;i<=n;i++) for(unsigned long long j=11;j<=m;j++) if(ma[i][j]==0) q[i][j]=q[i-1][j]+q[i][j-1]; printf("%llu",q[n][m]); return 0; } ```
by Jaim @ 2020-08-16 20:08:24


如果边界上一点被马控制,那么往下的点都是走不到的 @[sdzx](/user/197498)
by Jsxts_ @ 2020-08-16 20:18:14


@[yangsonghan](/user/94777) 不可以从左边过去吗
by Jaim @ 2020-08-16 20:21:17


@[sdzx](/user/197498) 我说的是边界,就是(0,i)和(i,0)的地方,因为只能从一边过来,所以只要上面有一个地方不能走,就不能通
by Jsxts_ @ 2020-08-16 20:41:57


@[yangsonghan](/user/94777) 谢谢,祝您的~~象棋~~水平有明显提高
by Jaim @ 2020-08-16 21:30:02


@[sdzx](/user/197498) 我没学过(
by Jsxts_ @ 2020-08-16 21:34:47


|