考查点:广度优先搜索 提交情况:一次WA AC_CODE: #include <stdio.h> #define MAX 100001 int n,k; typedef struct Node { int v,step; }; void bfs() { bool visit[MAX]; for(int i=0;i<MAX;i++) visit[i]=false; Node queue[MAX]; int front=0,rear=0; Node first,temp,next; first.v=n; first.step=0; visit[first.v]=true; queue[rear++]=first; while (front!=rear) { temp=queue[front++]; if(temp.v==k) { printf("%d/n",temp.step); return ; } if(temp.v+1<=MAX&&!visit[temp.v+1])//MAX,不是k { next.v=temp.v+1; next.step=temp.step+1; visit[next.v]=true; queue[rear++]=next; } if(temp.v-1>=0&&!visit[temp.v-1])//>=0,不是<=k { next.v=temp.v-1; next.step=temp.step+1; visit[next.v]=true; queue[rear++]=next; } if(temp.v*2<=MAX&&!visit[temp.v*2]) { next.v=temp.v*2; next.step=temp.step+1; visit[next.v]=true; queue[rear++]=next; } } } int main() { scanf("%d%d",&n,&k); if(n>=k) printf("%d/n",n-k); else bfs(); return 0; } 12222,呵呵。