博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1026 Ignatius and the Princess I
阅读量:5290 次
发布时间:2019-06-14

本文共 1920 字,大约阅读时间需要 6 分钟。

这道题和前几天做的一道题很像,都是bfs+优先队列,但是这道题多了一个路径输出

自己写的很乱,即使过了。。。也可能是数据太水才过了的

看了一下大牛的博客竟然0ms。。。

贴过来学习一下,写的真的条理清晰,包括最后的路径记录也是用了方向记录数组和递归 很巧妙

原博客:https://blog.csdn.net/ice_crazy/article/details/7763302

亮点:

三个数组用来记录:

map数组用来记录这个地方是否可以走,以及走这个地方需要多少秒,值为-1(不可走)0(可走)或者其他别的(几秒钟)

剩下两个用来记录路径:flag为从上一步到达这一步的方向,或者最初的第一步(值为0);blood用来还原这一步的击杀怪兽时间。

#include"stdio.h"  #include"string.h"  #include"queue"  using namespace std;    struct node  {      int x,y;      int step;      friend bool operator<(node n1,node n2)      {          return n2.step
=n || y<0 || y>=m) return 1; if(map[x][y]==-1) return 1; return 0; } int BFS() { priority_queue
q; node cur,next; int i; cur.x=0; cur.y=0; cur.step=0; map[0][0]=-1; q.push(cur); while(!q.empty()) { cur=q.top(); q.pop(); if(cur.x==n-1 && cur.y==m-1) return cur.step; for(i=0;i<4;i++) { next.x=cur.x+dir[i][0]; next.y=cur.y+dir[i][1]; if(judge(next.x,next.y)) continue; next.step=cur.step+1+map[next.x][next.y]; flag[next.x][next.y]=i+1; map[next.x][next.y]=-1; q.push(next); } } return -1; } int temp; void P(int x,int y) { int next_x,next_y; if(flag[x][y]==0) return ; next_x=x-dir[flag[x][y]-1][0]; next_y=y-dir[flag[x][y]-1][1]; P(next_x,next_y); printf("%ds:(%d,%d)->(%d,%d)\n",temp++,next_x,next_y,x,y); while(blood[x][y]--) printf("%ds:FIGHT AT (%d,%d)\n",temp++,x,y); } int main() { char str[111]; int i,l; int ans; while(scanf("%d%d",&n,&m)!=-1) { memset(map,0,sizeof(map)); memset(flag,0,sizeof(flag)); memset(blood,0,sizeof(blood)); for(i=0;i

 

转载于:https://www.cnblogs.com/xuyanqd/p/9032987.html

你可能感兴趣的文章
“新零售”个人理解
查看>>
win键盘映射成mac键盘
查看>>
妙色王因缘经
查看>>
Oracle之sql语句优化
查看>>
使用http-server开启一个本地服务器
查看>>
FineUIMvc随笔(3)不能忘却的回发(__doPostBack)
查看>>
Python【每日一问】04
查看>>
php CI框学习整理
查看>>
使用Netty,我们到底在开发些什么?
查看>>
hihocoder #1456 : Rikka with Lattice(杜教筛)
查看>>
基础数论复习
查看>>
Codeforces Round #429 (Div. 1) C. On the Bench(dp + 组合数)
查看>>
01.C#数据类型、排序、过滤(一章1.1-1.2)
查看>>
C++(笔)002
查看>>
js css3实现钟表效果
查看>>
Poj2795Exploring PyramidsDp
查看>>
Js实现截图功能
查看>>
display:none和visibility:hidden的区别
查看>>
web标准
查看>>
面向过程,面向对象各自优缺点
查看>>