poj 3278 简单的搜索

来源:互联网 发布:js幻灯片切换 编辑:程序博客网 时间:2024/06/05 08:13

因为刚开始时不知道怎么储存每一层更新时步数的变化,所以纠结了好久,后来看了别人的代码才知道原来只是上层的步数+1就好,所以这题也就没什么问题了,但还是有两个只是盲点,就是bool 怎么初始化,和 怎么清空stl 队列。

#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<cstring>using namespace std;int num[200001];bool vis[200001];/*typedef struct {        int x;       int step;}data;*/int start, end;queue<int>Q;int bfs(int x ){   while(!Q.empty())   {     int t = Q.front();     Q.pop();     if(t == end )     {      printf("%d\n",num[end]);      return 0;     }     if(t+1<200001&&!vis[t+1])     {      vis[t+1] = true;     Q.push(t+1);     num[t+1] = num[t]+1;       }     if(t-1>=0&&!vis[t-1])     {     vis[t-1] = true;     Q.push(t-1);     num[t-1] = num[t]+1;     }     if(t*2<200001 && !vis[t*2])     {       vis[t*2] = true;       Q.push(t*2);       num[t*2] = num[t]+1;     }   }}int main(){      scanf("%d %d",&start,&end);      memset(num, 0, sizeof(num));       vis[start]=true;       Q.push(start);       bfs(start);   system("pause");   return 0;}


原创粉丝点击