设为首页 加入收藏

TOP

hdu 5040 优先队列BFS+剪枝
2015-07-20 17:38:02 来源: 作者: 【 】 浏览:3
Tags:hdu 5040 优先 队列 BFS 剪枝

(北京网络赛09题)题意:给一矩阵(图),里面有起点,终点,还有探照灯(每个有初始朝向,每秒顺时针转90度),前面有灯或者自己被灯照着,移动就要花3秒,求起点到终点最短时间。

用一个数组三维数组记录一下,用来当前位置当前时间%4有没有灯,然后优先队列(时间短的在前面),搜索即可。考虑到可以来回走或者原地等,不能简单判重剪枝:每个地方最多是4种状态!就是4秒之后就全图状态回到一样!所以若当前状态(时间%4)下来过就不用来了。

#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
       
         #include
        
          #include
         
           using namespace std; struct xy { int x,y; int times; bool operator <(const xy &ttt)const { return ttt.times
          
           q; q.push(ss); while(!q.empty()) { xy cur=q.top(); q.pop(); if(a[cur.x][cur.y]==4&&cur.times
           
            =0&&next.y>=0&&next.x
            
             =0&&yy>=0&&xx
             
              =0&&yy>=0&&xx
              
               =0&&yy>=0&&xx
               
                =0&&yy>=0&&xx
                
                 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇STL之vector使用详解 下一篇HDU - 5033 Building

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·利用python进行数据 (2025-12-25 20:49:22)
·如何使用 python 中 (2025-12-25 20:49:19)
·零基础如何学爬虫技 (2025-12-25 20:49:17)
·Java 并发工具类:提 (2025-12-25 20:25:44)
·Java面试技巧:如何 (2025-12-25 20:25:41)