这个是我写的问题“过河卒”的代码,有问题,但不知到哪里有,有厉害的人指出吗?
#include <iostream>
using namespace std;
int gx[3]={0,1,0};
int gy[3]={-1,0,1};
int hxb[8]={-1,-2,-2,-1,+1,+2,+2,+1};
int hyb[8]={-2,-1,+1,+2,+2,+1,-1,-2};
int ex,ey;
int hx,hy;
int ans=0;
bool map[100][100];
void f(int zx,int zy)
{
if(zx==ex&&zy==ey)
{
ans++;
return;
}
for(int i = 0;i < 3;i++)
{
bool ok =
zx+gx[i]<=ex&&
zx+gx[i]>=0&&
zy+gy[i]<=ey&&
zy+gy[i]>=0&&
map[zx+gx[i]][zy+gy[i]]==1;
for(int j = 0;j < 8;j++)
{
if(zx+gx[i]==hx+hxb[j]&&zy+gy[i]==hy+hyb[j])
{
ok=0;
break;
}
}
if(ok)
{
map[zx+gx[i]][zy+gy[i]]=1;
f(zx+gx[i],zy+gy[i]);
map[zx+gx[i]][zy+gy[i]]=0;
}
}
return;
}
int main()
{
cin>>ex>>ey>>hx>>hy;
f(0,0);
cout<<ans;
return 0;
}