hdu--1026--Ignatius and the Princess I(bfs搜索+dfs(打印路径))
Ignatius and the Princess I
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 18847 Accepted Submission(s): 6090
Special Judge
1.Ignatius can only move in four directions(up, down, left, right), one step per second. A step is defined as follow: if current position is (x,y), after a step, Ignatius can only stand on (x-1,y), (x+1,y), (x,y-1) or (x,y+1).
2.The array is marked with some characters and numbers. We define them like this:
. : The place where Ignatius can walk on.
X : The place is a trap, Ignatius should not walk on it.
n : Here is a monster with n HP(1<=n<=9), if Ignatius walk on it, it takes him n seconds to kill the monster.
Your task is to give out the path which costs minimum seconds for Ignatius to reach target position. You may assume that the start position and the target position will never be a trap, and there will never be a monster at the start position.
/*
Name: hdu--1026--Ignatius and the Princess I
Copyright: ©2017 日天大帝
Author: 日天大帝
Date: 21/04/17 17:30
Description: bfs搜索路径,dfs打印路径
*/
#include<cstring>
#include<queue>
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct node{
int x,y,steps;
bool operator<(const node&a)const{
return steps>a.steps;
}
};
int bfs();
void dfs(int,int);
;
int map[MAX][MAX];
int to[MAX][MAX];
int cnt[MAX][MAX];
int n,m,ct;
][] = {{,},{,-},{,},{-,}};
int main(){
// freopen("in.txt","r",stdin);
ios::sync_with_stdio(false);
while(cin>>n>>m){
memset(map,,sizeof(map));
memset(to,,sizeof(to));
memset(cnt,,sizeof(cnt));
; i<n; ++i){
; j<m; ++j){
char ch;cin>>ch;
if(ch == '.'){
map[i][j] = ;
};
';
}
}
int ans = bfs();
if(ans){
cout<<"It takes "<<ans<<" seconds to reach the target position, let me show you the way."<<endl;
ct = ;
dfs(n-,m-);
}else printf("God please help our poor hero.\n");
cout<<"FINISH\n";//G++WA无数次,hdu C++ AC了
}
;
}
void dfs(int x,int y){
if(!to[x][y])return ;
int i,j;
i = x - dir[to[x][y]-][];//剪枝
j = y - dir[to[x][y]-][];//剪枝
dfs(i,j);
printf("%ds:(%d,%d)->(%d,%d)\n",ct++,i,j,x,y);
while(cnt[x][y]--) {
printf("%ds:FIGHT AT (%d,%d)\n",ct++,x,y);
}
}
int bfs(){
node start;
start.x = ;
start.y = ;
start.steps = ;
map[][] = -;
priority_queue<node> q;
q.push(start);
while(!q.empty()){
node a,temp = q.top();q.pop();
&& temp.y == m-)return temp.steps;
; i<; ++i){//i<4(n)
a.x = temp.x + dir[i][];
a.y = temp.y + dir[i][];
||a.y< || map[a.x][a.y] == -)continue;
a.steps = temp.steps + map[a.x][a.y] + ;
map[a.x][a.y] = -;
to[a.x][a.y] = i+;//剪枝
q.push(a);
}
}
;
}
hdu--1026--Ignatius and the Princess I(bfs搜索+dfs(打印路径))的更多相关文章
- hdu 1026 Ignatius and the Princess I(BFS+优先队列)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1026 Ignatius and the Princess I Time Limit: 2000/100 ...
- hdu 1026 Ignatius and the Princess I (bfs+记录路径)(priority_queue)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1026 Problem Description The Princess has been abducted ...
- HDU 1026 Ignatius and the Princess I(BFS+记录路径)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1026 Ignatius and the Princess I
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1026 Ignatius and the Princess I Description The Prin ...
- hdu 1026 Ignatius and the Princess I【优先队列+BFS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 1026 Ignatius and the Princess I(BFS+优先队列)
Ignatius and the Princess I Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &am ...
- hdu 1026:Ignatius and the Princess I(优先队列 + bfs广搜。ps:广搜AC,深搜超时,求助攻!)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1026 Ignatius and the Princess I(bfs)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1026 Ignatius and the Princess I 搜索,输出路径
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- HDU 1026 Ignatius and the Princess I(带路径的BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1026 题意:给出一个迷宫,求出到终点的最短时间路径. 这道题目在迷宫上有怪物,不同HP的怪物会损耗不同的时间,这 ...
随机推荐
- Swift计算字符数量
通过调用全局 countElements 函数并将字符串作为参数进行传递可以获取该字符串的字符数量. let unusualMenagerie = "Koala
- MySQL各模块工作配合
MySQL各模块工作配合 在了解了 MySQL 的各个模块之后,我们再看看 MySQL 各个模块间是如何相互协同工作的 .接下来,我们通过启动 MySQL,客户端连接,请求 query,得到返回结果, ...
- pdf.js在国际化的时候,显示不了中文的解决办法
在项目中使用了pdf实现在线预览功能,开始工具栏中一直都是英文的,在view.js中设置了也不起作用,偶然发现了问题所在 当我把网站发布到iis上的时候,用google浏览器的审查元素功能的审核发现j ...
- Ext 常用组件解析
Ext 常用组件解析 Panel 定义&常用属性 //1.使用initComponent Ext.define('MySecurity.view.resource.ResourcePanel' ...
- Markdown速查手册
之前一直使用简书做笔记,沉浸式的写作环境很棒.然而不知什么时候起,氛围愈发浮躁,软文鸡汤泛滥,离"简"字越来越远. 相比更加喜欢沉稳低调.内涵取胜的博客园.于是乎搬家! 搬家就要丢 ...
- H3CNE实验:Comware基本命令操作
第1步:Comware命令视图及切换操作 <H3C>system-view System View: return to User View with Ctrl+Z. [H3C]quit ...
- 【Python3之多进程】
一.进程和线程的简单解释 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 用生活举例: (转自阮一峰网络日志) 1.计算机的核心是CPU,它承担了所有 ...
- 在suse上折腾iptables
需求背景:有台服务器希望屏蔽掉某IP对它的SSH连接. 临时客串下DevOps,下面的做法可能在专业运维的同学里不太专业,还请指教. 该服务器的操作系统是SuSE Linux,服务器上是安装了ipta ...
- 使用C#创建SQLite桌面应用程序
本文属于原创,转载请注明出处,谢谢! 一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 ...
- Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法
Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request,并设 ...