都没有人用C写,那我写一个
#include <stdio.h>
int fun(int x,int y,int n,int m);
int main(){
int n = 0,m = 0,x = 0,y = 0;
scanf("%d %d %d %d",&n,&m,&x,&y);
long dp[n+1][m+1];
for(int i = 0; i < n+1; i++){
for(int j = 0; j < m+1; j++){
dp[i][j] = 0;
}
}
int i = 0;
int j = 0;
if(fun(x,y,n,m)) dp[x][y] = -1;
if(fun(x+2,y+1,n,m)) dp[x+2][y+1] = -1;
if(fun(x+1,y+2,n,m)) dp[x+1][y+2] = -1;
if(fun(x-1,y+2,n,m)) dp[x-1][y+2] = -1;
if(fun(x-2,y+1,n,m)) dp[x-2][y+1] = -1;
if(fun(x-2,y-1,n,m)) dp[x-2][y-1] = -1;
if(fun(x-1,y-2,n,m)) dp[x-1][y-2] = -1;
if(fun(x+1,y-2,n,m)) dp[x+1][y-2] = -1;
if(fun(x+2,y-1,n,m)) dp[x+2][y-1] = -1;
for(i = 0; i < n+1; i++){
if(dp[i][0] == -1)
break;
dp[i][0] = 1;
}
for(j = 0; j < m+1; j++){
if(dp[0][j] == -1)
break;
dp[0][j] = 1;
}
for(i = 1; i < n+1; i++){
for(j = 1; j < m+1; j++){
if(dp[i][j] == -1 || (dp[i-1][j] == -1 && dp[i][j-1] == -1)){
continue;
}
else if(dp[i-1][j] == -1 && dp[i][j-1] != -1){
dp[i][j] = dp[i][j-1];
}
else if(dp[i-1][j] != -1 && dp[i][j-1] == -1){
dp[i][j] = dp[i-1][j];
}
else{
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
}
printf("%ld",dp[i-1][j-1]);
return 0;
}
int fun(int x,int y,int n,int m){
if(x >= 0 && x <= n && y >= 0 && y <= m)
return 1;
else
return 0;
}