博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BDFZOI bdfz历险记
阅读量:5032 次
发布时间:2019-06-12

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

难度:提高-

题目类型:BFS

提交次数:2

涉及知识:BFS

描述

公主又又又被大魔王抓走啦!这次公主被困在一个叫做“bdfz”的迷宫里,作为勇者的你必须穿越这个迷宫才能找到公主。在迷宫中除了有道路和墙壁,你还会遇到各种各样的事件,影响你的血量,并且同一事件可以反复触发,例如:

‘1’:起太晚上学迟到,血量-1

‘2’:考太差惨遭嘲讽,血量-2

‘5’:上课睡着没听课,血量-5

‘X’:导师约谈,血量+1

‘Y’:幡然悔悟,血量+5

假设进入迷宫时你的起始血量为L,每移动1个位置需要1单位时间,若血量减至<=0,则需要原地回血直到血量为正值,1单位时间可以回复1点血量。血量上限为100(即血量不会超过100)。

输入第一行3个整数N,M,L(N,M,L<=50)

随后N行,每行有M个字符。字符的意义如下:
‘.’:道路
‘a’:公主
‘@’:勇者起始位置
‘#’:墙壁
‘1’:起太晚上学迟到,血量-1
‘2’:考太差惨遭嘲讽,血量-2
‘5’:上课睡着没听课,血量-5
‘X’:导师约谈,血量+1
‘Y’:翻然悔悟,血量+5输出如果能救出公主,输出最短时间;否则输出"Impossible"样例输入

样例1:6 8 2....Y.....@..#2..##.51...X#.#......X51.....##a..样例2:6 8 2YYY##...Y.@55#2.####55#..X#.#5#....Y55#....##a..

样例输出

样例1:10样例2:15 代码:
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int n, m, l; 7 char map[60][60]; 8 bool visited[60][60][60]; 9 int dirx[4]={
1,-1,0,0};10 int diry[4]={
0,0,1,-1};11 12 struct node{13 int x, y;14 int time, blood;15 node(int xx, int yy, int tt, int bb): x(xx),y(yy),time(tt),blood(bb){}16 };17 18 bool operator<(const node&n1, const node&n2){19 return n1.time>n2.time;20 }21 22 bool judge(int x, int y){23 if(map[x][y]!='#' && map[x][y]!= 0)24 return true;25 else 26 return false;27 }28 int chb(char a){29 if(a=='.'||a=='@'||a=='a') return 0;30 if(a=='X') return 1;31 if(a=='Y') return 5;32 else return -(a-'0');33 }34 priority_queue
pq;35 36 int main(){37 cin>>n>>m>>l;38 int i, j;39 memset(visited,0,sizeof(visited));40 for(i = 1; i <= n; i++)41 for(j = 1; j <= m; j++){42 cin>>map[i][j];43 if(map[i][j]=='@'){44 pq.push(node(i,j,0,l));45 visited[i][j][l] = true;46 } 47 }48 49 bool flag = false;50 while(!pq.empty()){51 node no = pq.top();52 pq.pop();53 // cout<
<<" "<
<<" "<
<<" "<
<<":"<

备注:

多维BFS,加一个关于血量的参数。没血之后要花时间(deltatime)原地回血。chb函数是change the blood,这个函数里没有把所有地形都定义全(终点血量乱了),导致查了一个小时的错误。。

第二个错误是没写deltatime,直接把正在扩展的no.time给改了,这样肯定就不对了。。

转载于:https://www.cnblogs.com/fangziyuan/p/6579899.html

你可能感兴趣的文章
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Spring整合hibernate:3、使用XML进行声明式的事务管理
查看>>
SqlServer之Convert 函数应用格式化日期(转)
查看>>
软件测试领域中的10个生存和发展技巧
查看>>
Camera前后摄像头同时预览
查看>>
HDU 1856
查看>>
课堂作业01--架构师的职责
查看>>
iOS计算富文本(NSMutableAttributedString)高度
查看>>
2017/09/15 ( 框架2)
查看>>
Centos下源码安装git
查看>>
gulp-rev-append md5版本号
查看>>
IO流之File类
查看>>
sql 基础语句
查看>>
CF717A Festival Organization(第一类斯特林数,斐波那契数列)
查看>>
oracle直接读写ms sqlserver数据库(二)配置透明网关
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
Oracle composite index column ordering
查看>>
ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表
查看>>
kaggle竞赛
查看>>