求助大佬 代码:
#include <iostream>
using namespace std;
float reverseNum(float a);
long long crossTheRiver(int x,int y,int px,int py);
bool checkResult(int x,int y,int px,int py);
long long f[21][21]={};
int main(){
int x,y,px,py;
cin >>x>>y>>px>>py;
int result = crossTheRiver(x,y,px,py);
cout<<result<<endl;
}
long long crossTheRiver(int x,int y,int px,int py){
f[1][0]=f[0][1]=1;
for(int i=0;i<=x;i++){
for(int j=0;j<=y;j++){
if(checkResult(i,j,px,py)){
f[i][j]=0;
}else {
if(i==0&&j>1){
f[i][j]=f[i][j-1];
}
if(j==0&&i>1){
f[i][j]=f[i-1][j];
}
if(j>=1&&i>=1){
f[i][j]=f[i][j-1]+f[i-1][j];
}
}
}
}
return f[x][y];
}
bool checkResult(int x,int y,int px,int py){
return ((abs(x-px)+abs(y-py))==3&&abs(x-px)>0&&abs(y-py)>0)||(x==px&&y==py);
}
为啥3和4步通不过呢,答案好像没啥问题