已开longlong,数组没开小,边界有判断,但是第三个数据WA?
#include<bits/stdc++.h>
using namespace std;
long long dp[21][21];
int x,y,xh,yh;
int dd[10][3]={
{-2,-1},{-2,1},{2,1},{2,-1},{1,2},{1,-2},{-1,2},{-1,-2}
};
int main(){
dp[0][0]=1;
cin>>x>>y>>xh>>yh;
dp[xh][yh]=-1;
for(int i=0;i<8;i++){
int dx=xh+dd[i][0];int dy=yh+dd[i][1];
if(0<=dx&&dx<=x&&0<=dy&&dy<=y){
dp[dx][dy]=-1;
}
}
for(int i=0;i<=x;i++){
for(int j=0;j<=y;j++){
if(dp[i][j]==-1||(i==0&&j==0)){
continue;
}else if(i==0||dp[i-1][j]==-1){
dp[i][j]=dp[i][j-1];
}else if(j==0||dp[i][j-1]==-1){
dp[i][j]=dp[i-1][j];
}else{
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
}
if(dp[x][y]==-1){
cout<<0;
}else{
cout<<dp[x][y];
}
return 0;
}