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的怪物会损耗不同的时间,这 ...
随机推荐
- JS面向对象笔记二
菜单导航,<JS面向对象笔记一>, 参考书籍:阮一峰之<JavaScript标准参考教程> 一.构造函数和new命令 二.this关键字 三.构造函数和new命令 四.构造函 ...
- ci框架中表前缀的处理
后面的写死,前面的无论如何改变都没事,会自动的替换,以后如果数据库的表前缀被修改了,只需要修改上面的配置项,下面的不变
- 【LeetCode】191. Number of 1 Bits
题目: Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面
首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...
- js 、jq强化复习
JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据: 使用 window.alert() 弹出警告框. 使用 document.write() 方法将内容写到 HTML ...
- Ext修改所有Ajax的timeout
Ext修改所有Ajax的timeout stackoverflow上的解决方案 //需要在初始化viewport时执行 //方法一重写 Ext.Ajax.timeout= 60000; Ext.ove ...
- VB6之GIF分解
原文链接:http://hi.baidu.com/coo_boi/item/1264a64172fe8dec1f19bc08 还是找了个C++的翻译下,原文链接:http://www.360doc.c ...
- 适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)
本人也是才开始接触 阿里巴巴的开源分布式框架 dubbo,因为现在微服务框架 spring boot也非常的火,然后结合dubbo的官网搭建这个开发环境. 一.首先 zookeeper作为集群管理服务 ...
- Watson Explorer Analytical Components 3 - use case scenarios
The followings are the user case scenarios that WEX can be used for generating value. 1.Customer Ins ...
- centos6.5下redis安装步骤总结
1.首先下载一个版本 我用的是3.2.9 解压:tar -zxvf /redis-stable.tar.gz 在/usr/local/新建redis文件夹 然后把解压好的文件夹移动到/usr/loca ...