zoukankan      html  css  js  c++  java
  • HDU 1548 A strange lift【BFS】

    题意:给出一个电梯,给出它的层数f,给出起点s,终点g,以及在每一层能够上或者下w[i]层,问至少需要按多少次按钮到达终点。

    和POJ catch that cow一样,直接用了那一题的代码,发现一直wa,

    后来才发现,POJ catch that cow是单组输入的,所以每次调用的时候不用清空队列,而这一题一次输入有多组数据---

    用这个清空队列

    while(!q.empty()) q.pop();

    #include<iostream>  
    #include<cstdio>  
    #include<cstring>  
    #include<algorithm>
    #include<queue>  
    #define maxn 100005
    using namespace std;
    queue<int> q;
    int visit[maxn],step[maxn],n,k,w[maxn],flag,t,sum;
    void bfs()
    {
        int head,next,i;
        while(!q.empty()) q.pop();   //注意调用前一定要清空 
        q.push(n);
        visit[n]=1;
        step[n]=0;
        while(!q.empty())
        {
            head=q.front(); q.pop();//取出 并弹出队首    
            for(i=1;i<=2;i++)
            {
                if(i==1) next=head-w[head];
                else  next=head+w[head];
                if(next>t||next<1) continue;//越界 
                          
    			if(!visit[next])//判重 
    			{
    				q.push(next);
                    visit[next]=1;
                    step[next]=step[head]+1;
    				  if(next==k) //找到终点 
                      {
                	   flag=1;
                	   sum=step[next];
    				   return;
                      }		
    			}                       
            }       
        }
        return;
    }
    int main()
    {
    	int i;
    	while(scanf("%d",&t)!=EOF&&t)
        {
        	memset(visit,0,sizeof(visit));
        //	memset(step,0,sizeof(step));//不用清空step数组 
        	
        	scanf("%d %d",&n,&k);
        	for(i=1;i<=t;i++) 
    		scanf("%d",&w[i]);
    		if(n==k) 
    		{
    			printf("0
    ");
    			continue;
    		}
    		flag=0;
    		bfs();
    		if(flag) printf("%d
    ",sum);
    		else printf("-1
    ");	
        }  
    }
    

      

  • 相关阅读:
    C# WPF定时器
    C#处理JSON数据
    SQL-乐观锁,悲观锁之于并发
    C# 集合-并发处理-锁OR线程
    C# 生成二维码,彩色二维码,带有Logo的二维码及普通条形码
    C# (事件触发)回调函数,完美处理各类疑难杂症!
    C# Lambda表达式
    C# 匿名方法
    浅谈C# 匿名变量
    鸡兔同笼
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4287443.html
Copyright © 2011-2022 走看看