#include<bits/stdc++.h>
using namespace std;
int main()
{
long long s[41][41];
int a,b,c,d;
cin>>a>>b>>c>>d;
c+=2; d+=2; a+=2; b+=2;
for(int i=0 ; i<=40 ; i++)
{
for(int j=0 ; j<=40 ; j++)
{
s[i][j] = 1;
}
}
s[c+2][d+1] = s[c+1][d+2] = s[c-1][d+2] = s[c-2][d+1] = -1;
s[c-2][d-1] = s[c-1][d-2] = s[c+2][d-1] = s[c+1][d-2] = s[c][d] = -1;
cout<<s[3][3]<<endl;
for(int i=3 ; i<=a ; i++)
{
for(int j=3 ; j<=b ; j++)
{
if(s[i][j] == -1)
{
cout<<s[i][j]<<endl;
continue;
}
else if( s[i-1][j] == -1 && s[i][j-1] != -1) s[i][j] = s[i][j-1];
else if( s[i][j-1] == -1 && s[i-1][j] != -1) s[i][j] = s[i-1][j];
else if( s[i-1][j] == -1 && s[i][j-1] == -1) s[i][j] = 0;
else if( s[i-1][j] != -1 && s[i][j-1] != -1) s[i][j] = s[i][j-1] + s[i-1][j];
//cout<<s[i][j]<<endl;
}
}
cout<<s[a][b]<<endl;
return 0;
}
这个是更改后的代码,但是三、四两个测试点过不去。都是WA。希望大家再帮我分析分析代码哪里有问题。 PS:这个代码是纯模拟的。