BFS算法的思想:
最佳策略。
struct node
{
int x;
int step;
}
bool vis[max];
inline int dir(int x,int i)
{
switch(i)
{
case 0:return 2*x;
case 1:return x+1;
case 2:return x-1;
}
}
inline int Judge(int x)
{
if(ed.x<=100000&&ed.x>=0)
return 1;
return 0;
}
int bfs(int n,int k)
{
int i;
if(n==k)return 0;
queue<node>q;
node st,ed;
st.x=n;
st.step=0;
memset(vis,false,sizeof(vis));
vis[st.x]=true;
q.push(st);
while(!q.empty())
{
st=q.front();
q.pop();
if(st.x==k)
return st.step;
for(i=0;i<3;i++)
{
ed.x=dir(st.x,i);
if(Judge(ed.x)&&!vis[ed.x])
{
ed.step=st.step+1;
vis[ed.x]=true;
q.push(ed);
}
}
}
return -1;
}
BFS(顶点 i)
{
vis[i]=1;
while(队列不为空)
{
//取出队列的头的顶点k
for(j=0;j<n;j++)
{
//j是k的邻接顶点,j没有访问过
if(Edge[k][j]==1&&!vis[j])
{
//将顶点j的访问标志1
//将顶点i入队列
}
}
}
}
//暴力搜索加最佳策略
总结:策略最佳。