#include<iostream>
#include<queue>
#include<map>
using namespace std;
queue<int>q1;
int dr[4]={-1,1,0,0};
int dc[4]={0,0,-1,1};
map <int, int> step;
int read();
void init(int x);
int fbs();
int conmoveto(int u,int dire);
int moveto(int u,int dire);
int main()
{
int sum=0,s;
s=read();
init(s);
sum=fbs();
cout<<sum<<endl;
}
int read()//读入数据;
{
}
void init(int x)
{
step[x]=0;
q1.push(x);
}
int fbs()
{
int i;
int u,v=0;
while(!q1.empty())
{
u=q1.front();
q1.pop();
if(u==&&v==0)
{
return 0;
}
else
{
for(i=0;i<4;i++)
{
if(conmoveto(u,i)==1)
{
v=moveto(u,i);
if(v==)
{
step[v]=step[u]+1;
return step[v];
}
if(step[v]==0)
{
step[v]=step[u]+1;
q1.push(v);
}
}
}
}
}
return (-1);
}
int conmoveto(int u,int dire)
{
int i,j;
int row,col;
row=dr[dire]+row;
col=dc[dire]+col;
if(row>=0&&row<=2&&col>=0&&col<=2)
{
return 1;
}
else
{
return 0;
}
}
int moveto(int u,int dire)
{
int i;
int v=0;
int row,col,r,c;
r=dr[dire]+row;
c=dc[dire]+col;
jiu[row][col]=jiu[r][c];
jiu[r][c]=0;
return v;
}
一个广搜的模板,适用于大多数程序,思路清晰,这里不过多解释,愿小伙伴们尽早解决问题。
#include<queue>
#include<map>
using namespace std;
queue<int>q1;
int dr[4]={-1,1,0,0};
int dc[4]={0,0,-1,1};
map <int, int> step;
int read();
void init(int x);
int fbs();
int conmoveto(int u,int dire);
int moveto(int u,int dire);
int main()
{
int sum=0,s;
s=read();
init(s);
sum=fbs();
cout<<sum<<endl;
}
int read()//读入数据;
{
int i,s=0;
}
void init(int x)
{
step[x]=0;
q1.push(x);
}
int fbs()
{
int i;
int u,v=0;
while(!q1.empty())
{
u=q1.front();
q1.pop();
if(u==&&v==0)
{
return 0;
}
else
{
for(i=0;i<4;i++)
{
if(conmoveto(u,i)==1)
{
v=moveto(u,i);
if(v==)
{
step[v]=step[u]+1;
return step[v];
}
if(step[v]==0)
{
step[v]=step[u]+1;
q1.push(v);
}
}
}
}
}
return (-1);
}
int conmoveto(int u,int dire)
{
int i,j;
int row,col;
row=dr[dire]+row;
col=dc[dire]+col;
if(row>=0&&row<=2&&col>=0&&col<=2)
{
return 1;
}
else
{
return 0;
}
}
int moveto(int u,int dire)
{
int i;
int v=0;
int row,col,r,c;
r=dr[dire]+row;
c=dc[dire]+col;
jiu[row][col]=jiu[r][c];
jiu[r][c]=0;
return v;
}
一个广搜的模板,适用于大多数程序,思路清晰,这里不过多解释,愿小伙伴们尽早解决问题。