提交记录
#include <iostream>
using namespace std;
long long a[25][25];
int m,n;
int x,y;
int dx[9]={0,-1,-2,-1,-2,1,2,1,2},dy[9]={0,-2,-1,2,1,-2,-1,2,1};
bool safe(int i,int j)
{
for(int k=1;k<=8;k++)
{
if(x+dx[k]==i&&y+dy[k]==j)
return false;
}
return true;
}
int main()
{
cin>>n>>m>>x>>y;
a[0][0]=1;
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
{
if((!(i==0&&j==0))&&(!(i==x&&j==y))&&safe(i,j))
{
a[i][j]=a[i-1][j]+a[i][j-1];
}
}
cout<<a[n][m];
}
交上去之后只有一个点对了,下了第二个测试点数据,数据是
10 10 4 4
,答案是
6802
,但是奇怪的是,我本地运行结果也是6802。