#include<bits/stdc++.h>
using namespace std;
int ma[50][50];
long long dp[50][50];
int x,y,mx,my;
int cx[20]={-2,-1,1,2,-2,-1,1,2,0};
int cy[20]={1,2,2,1,-1,-2,-2,-1,0};
int main(){
cin>>x>>y>>mx>>my;
for(int i=0;i<=8;i++){
if(mx+cx[i]>=0&&my+cy[i]>=0)
dp[mx+cx[i]][my+cy[i]]=-1;
}
for(int i=0;i<=x;i++){
if(dp[i][0]!=-1){
dp[i][0]=1;
}
}
for(int i=0;i<=y;i++){
if(dp[0][i]!=-1){
dp[0][i]=1;
}
}
for(int i=1;i<=x;i++){
for(int j=1;j<=y;j++){
if(dp[i][j]!=-1){
if(dp[i][j-1]==-1&&dp[i-1][j]!=-1){
dp[i][j]=dp[i-1][j];
}
if(dp[i-1][j]==-1&&dp[i][j-1]!=-1){
dp[i][j]=dp[i][j-1];
}
if(dp[i][j-1]!=-1&&dp[i-1][j]!=-1){
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
}
}
cout<<dp[x][y];
return 0;
}
这个代码(dp做法)60分(3,4测试点WA) 麻烦各位大佬帮忙找一下问题,谢谢!