Rt,用的不是标准dp(复建选手已经忘了hh)但也是递推,不理解为啥错了,常见错误都规避了,求调
#include<iostream>
using namespace std;
long long en,em,n,m,sn,sm;
long long route[31][31];
bool ava[31][31];
int main(){
sn=2,sm=2;
cin>>en>>em>>n>>m;
en+=2,em+=2,n+=2,m+=2;
for(int i=2;i<=31;i++){
route[2][i]=1;
route[i][2]=1;
}
for(int i=0;i<=31;i++)
for(int j=0;j<=31;j++)
ava[i][j]=true;
ava[n-2][m-1]=false;
ava[n-1][m-2]=false;
ava[n+2][m-1]=false;
ava[n+1][m-2]=false;
ava[n-2][m+1]=false;
ava[n-1][m+2]=false;
ava[n+2][m+1]=false;
ava[n+1][m+2]=false;
ava[n][m]=false;
route[n][m]=0;
route[n-2][m-1]=0;
route[n-1][m-2]=0;
route[n+2][m-1]=0;
route[n+1][m-2]=0;
route[n-2][m+1]=0;
route[n-1][m+2]=0;
route[n+2][m+1]=0;
route[n+1][m+2]=0;
for(int i=3;i<=en;i++)
for(int j=3;j<=em;j++){
if(ava[i][j]==false)
continue;
route[i][j]=route[i-1][j]+route[i][j-1];
}
cout<<route[en][em];
return 0;
}