我是看了题解才ac的;不知道为什么不能设左上两行的初始值为1,而必须设a[2][2]为1才可以
#include<bits/stdc++.h>
using namespace std;
long long int a[30][30]={0},b[30][30]={0};
int main(){
int ex,ey,mx,my;
cin>>ex>>ey>>mx>>my;
ex+=2;
ey+=2;
mx+=2;
my+=2;
b[mx][my]=-1;
b[mx-2][my-1]=-1;
b[mx-1][my-2]=-1;
b[mx-2][my+1]=-1;
b[mx-1][my+2]=-1;
b[mx+2][my-1]=-1;
b[mx+1][my-2]=-1;
b[mx+2][my+1]=-1;
b[mx+1][my+2]=-1;
// for(int i=2;i<=ex;i++){
// if(b[i][2]!=-1) a[i][2]=1;
// }
//
// for(int i=2;i<=ey;i++){
// if(b[2][i]!=-1) a[2][i]=1;
// }
a[2][2]=1;
for(int i=2;i<=ex;i++){
for(int j=2;j<=ey;j++){
if(b[i][j]==-1)
a[i][j]=0;
else
a[i][j]=max(a[i-1][j]+a[i][j-1],a[i][j]);
}
}
cout<<a[ex][ey];
return 0;
}