前言:
这······是一个十分古老的代码,由于老师讲的时候没听是太久以前写的,所以想不出当时的思路······(当时一定是脑子抽了,写这么长 )
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a,b;
long long f[10000][10000];
bool s[10000][10000];
int main()
{
cin>>n>>m>>a>>b;
f[0][0]=1;
s[a][b]=1;
if(a-1>=0&&b-2>=0)//许多的判断
{
s[a-1][b-2]=1;
}
if(a+1<=n&&b-2>=0)
{
s[a+1][b-2]=1;
}
if(a-2>=0&&b-1>=0)
{
s[a-2][b-1]=1;
}
if(a+2<=n&&b-1>=0)
{
s[a+2][b-1]=1;
}
if(a-2>=0&&b+1<=m)
{
s[a-2][b+1]=1;
}
if(a+2<=n&&b+1<=m)
{
s[a+2][b+1]=1;
}
if(a-1>=0&&b+2<=m)
{
s[a-1][b+2]=1;
}
if(a+1<=n&&b+2<=m)
{
s[a+1][b+2]=1;
}
for(int i=1;i<=n;i++)
{
if(s[i][0]==0)
{
f[i][0]=f[i-1][0];
}
}
for(int i=1;i<=m;i++)
{
if(s[0][i]==0)
{
f[0][i]=f[0][i-1];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(s[i][j]==1)
{
f[i][j]=0;
}
if(s[i][j]==0)
{
f[i][j]=f[i][j-1]+f[i-1][j];
}
}
}
cout<<f[n][m];
return 0;
}
求打赏