這是我的P1002的代碼,每次都爆兩個點,教練也看不出來有什么問題,請大家幫忙看一看。
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
long long a[100][100],dp[100][100];
int main()
{
int x,y,x1,y1;
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
cin>>x>>y>>x1>>y1;
a[x1][y1]=1;
/*if(x1>=2)
{
a[x1-2][y1+1]=1;
if(y1>=1)
a[x1-2][y1-1]=1;
}
if(x1>=1)
a[x1-1][y1+2]=1;
a[x1+1][y1+2]=1;
a[x1+2][y1+1]=1;
if(y1>=1)
a[x1+2][y1-1]=1;
if(y1>=2)
a[x1+1][y1-2]=1;
if(x1>=1&&y1>=2)
a[x1-1][y1-2]=1;
*/
a[x1-2][y1+1]=1;
a[x1-2][y1-1]=1;
a[x1-1][y1+2]=1;
a[x1+1][y1+2]=1;
a[x1+2][y1+1]=1;
a[x1+2][y1-1]=1;
a[x1+1][y1-2]=1;
a[x1-1][y1-2]=1;
for(int i=0;i<=x;i++)
{
for(int j=0;j<=y;j++)
{
if(a[i][j]==1)
dp[i][j]=0;
else
{
if(i==0&&j==0)
{
dp[i][j]=1;
continue;
}
if(i==0)
{
dp[i][j]=dp[i][j-1];
continue;
}
if(j==0)
{
dp[i][j]=dp[i-1][j];
continue;
}
dp[i][j]=dp[i][j-1]+dp[i-1][j];
}
}
}
cout<<dp[x][y]<<endl;
return 0;
}