0
已采纳
程思怡
中级守护
中级守护
搜索策略:
1:令a[1]:=(0,0)
2:从a[i]出发按移动规则选定方向,从而继续搜索下一个顶点
3:输出
附:(四个方向)
1:(i,j)-->(i+2,j+1)
2:(i,j)-->(i+1,j+2)
3:(i,j)-->(i-1,j+2)
4:(i,j)-->(i-2,j+1)
0
杨思诺
新手守护
新手守护
void search(int t,int x,int y)
{
if(x==4&&y==8)
{
for(int i=0;i<t-1;i++)
{
cout<<ans[i][0]<<","<<ans[i][1]<<"->";
}
cout<<ans[t-1][0]<<','<<ans[t-1][1]<<endl;
sum++;
}
else
{
for(int i=0;i<4;i++)
{
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(cj(nx,ny)&&!used[nx][ny])
{
ans[t][0]=nx;
ans[t][1]=ny;
used[nx][ny]=true;
search(t+1,nx,ny);
used[nx][ny]=false;
}
}
}
}
0
孙艺芳
高级守护
高级守护
bool ca(int x,int y)
{
if(x>=0&&x<=4&&y>=0&&y<=8)return true;
return false;
}
void search(int t,int x,int y)
{
if(x==4&&y==8)
{
for(int i=0;i<t-1;i++)cout<<ans[i][0]<<","<<ans[i][1]<<"->";
cout<<ans[t-1][0]<<","<<ans[t-1][1]<<endl;
}
else
{
for(int i=0;i<4;i++)
{
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(ca(nx,ny)&&!used[nx][ny])
{
ans[t][0]=nx;
ans[t][1]=ny;
used[nx][ny]=true;
search(t+1,nx,ny);
used[nx][ny]=false;
}
}
}
}
0
0
0
谢其桦
资深守护
资深守护
bool ca(int x,int y)
{
if(x>=0&&x<=4&&y>=0&&y<=8)return true;
return false;
}
void search(int t,int x,int y)
{
if(x==4&&y==8)
{
for(int i=0;i<t-1;i++)cout<<ans[i][0]<<","<<ans[i][1]<<"->";
cout<<ans[t-1][0]<<","<<ans[t-1][1]<<endl;
}
else
{
for(int i=0;i<4;i++)
{
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(ca(nx,ny)&&!used[nx][ny])
{
ans[t][0]=nx;
ans[t][1]=ny;
used[nx][ny]=true;
search(t+1,nx,ny);
used[nx][ny]=false;
}
}
}
}