本蒟蒻代码三四点WA
求各位dalao帮忙看一下
救救蒟蒻
#include<bits/stdc++.h>
#define MAXN 21
using namespace std;
int chessboard[MAXN][MAXN] = {0};
int n,m,x,y;
int dx[8] = {-2,-1,1,2,2,1,-1,-2};
int dy[8] = {1,2,2,1,-1,-2,-2,-1};
void horse()
{
int i;
chessboard[x][y]=-1;
for(i=0;i<8;i++)
{
if((x+dx[i]>=0&& x+dx[x]<=n)&&(y+dy[i]>=0)&&(y+dy[i])<=m)
{
chessboard[x+dx[i]][y+dy[i]]=-1;
}
}
}
void search()
{
int i,j;
for(i=0;i<=n;i++)
{
if(chessboard[i][0]!=-1)
{
chessboard[i][0] = 1;
}
else
{
break;
}
}
for(i=0;i<=m;i++)
{
if(chessboard[0][i]!=-1)
{
chessboard[0][i] = 1;
}
else
{
break;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(chessboard[i][j]!=-1)
{
if((chessboard[i-1][j]!=-1)&&(chessboard[i][j-1]!=-1))
//上面和左面也不是马的控制点
{
chessboard[i][j]=chessboard[i-1][j]+chessboard[i][j-1];
}
if((chessboard[i-1][j]==-1)&&(chessboard[i][j-1]!=-1))
//上面有马的控制点 左边无马的控制点
{
chessboard[i][j]=chessboard[i][j-1];
}
if((chessboard[i-1][j]!=-1)&&(chessboard[i][j-1]==-1))
//上面无马的控制点 左边有马的控制点
{
chessboard[i][j]=chessboard[i-1][j];
}
if((chessboard[i-1][j]==-1)&&(chessboard[i][j-1]==-1))
//上面有马的控制点 左边有马的控制点
{
chessboard[i][j]=0;
//没有通路
}
}
}
}
}
int main()
{
int i,j;
cin>>n>>m>>x>>y;
horse();
search();
cout<<chessboard[n][m];
return 0;
}