只有80pts,本蒟蒻实在是调不出来了,救救我吧(悬赏两个关注)
#include <bits/stdc++.h>
using namespace std;
long long dp[10005][10005],ma[10005][10005];
int dx[8] = {2,1,-2,-1,2,1,-2,-1};
int dy[8] = {1,2,-1,-2,-1,-2,1,2};
int main(){
int n,m,x1,x2;
cin>>n>>m>>x1>>x2;
dp[0][0]=1;
for(int i=1;i<=m;i++){
dp[0][i]=1;
}
for(int i=1;i<=n;i++){
dp[i][0]=1;
}
for(int i=0;i<=7;i++){
int tx=x1+dx[i];
int ty=x2+dy[i];
if(tx>=0&&tx<=n&&ty>=0&&ty<=m){
ma[tx][ty]=1;
dp[tx][ty]=0;
}
if(tx==0){
for(int j=ty;j<=m;j++) dp[0][j]=0;
}
if(ty==0){
for(int j=tx;j<=n;j++) dp[j][0]=0;
}
}
ma[x1][x2]=1;
dp[x1][x2]=0;
if(x1==0){
for(int i=x2;i<=m;i++) dp[0][i]=0;
}
if(x2==0){
for(int i=x1;i<=n;i++) dp[i][0]=0;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(ma[i][j]==1) continue;
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
cout<<dp[n][m];
return 0;
}