0
已解决
汪天琦
初级光能
初级光能
0
已采纳
李秉轩
修练者
修练者
#include <bits/stdc++.h>
using namespace std;
long long f[25][25],d[25][25];
/*
状态f[i][j]从A点到达(i,j)的路径
状态转移方程f[i][j]=f[i-1][j]+f[i][j-1]
边界f[0][0]=1;
目标从A点到达B点的路径
*/
void aa(int x,int y){
int i,j,k;
if(x<0||x>20||y<0||y>20){
return;
}
else d[x][y]=1;
}
int main(){
int n,m,x,y;
int i,j;
cin>>n>>m>>x>>y;
aa(x-1,y);
aa(x+1,y);
aa(x,y+1);
aa(x,y-1);
f[0][0]=1;
for(i=0;i<=n;i++)
for(j=0;j<=m;j++){
if(d[i][j]==0&&i>0&&j>0){
f[i][j]=f[i-1][j]+f[i][j-1];
}else if(d[i][j]==1){
f[i][j]=0;
}else if(i>0&&d[i][0]==0){
f[i][0]=f[i-1][0];
}else if(j>0&&d[0][j]==0){
f[0][j]=f[0][j-1];
}
}
cout<<f[n][m]<<endl;
return 0;
}