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