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的怪物会损耗不同的时间,这 ...
随机推荐
- Vuejs技术栈从CLI到打包上线实战全解析
前言 本文是自己vue项目实践中的一些总结,针对Vue2及相关技术栈,实践中版本为2.3.3. 开发前须知 vue-cli 在开发前,我们要至少通读一遍vue官方文档和API(看官方文档是最重要的,胜 ...
- 使用Spring mvc接收整个url地址及参数时注意事项
使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...
- mkdirs自动创建文件夹
//保存路径 如file路径是E:\filer\a.jpg File toSaveFile=new File("filePath"); if(toSaveFile!=null){ ...
- loadrunner 手工参数拼接与l oadrunner的url编码
Acction() { //演示需要的一些变量,提前声明 char *name = "yezi_zh"; "; char *work = "engin" ...
- Linux下php安装memcache
Linux下php安装memcache说明:php安装目录:/phpstudy/server/php/bin/phpphp.ini配置文件路径:/phpstudy/server/php/etc/php ...
- [leetcode-573-Squirrel Simulation]
There's a tree, a squirrel, and several nuts. Positions are represented by the cells in a 2D grid. Y ...
- Android远程桌面助手
很早之前,做过一个<WinCE远程桌面助手>,在没有屏幕或者在调试LCD驱动时,发挥了很大作用,平日开发也是必备.后来还被网友用于处理一些疑难问题,如无法输入开机密码时可通过该工具远程输入 ...
- 一个非常简单的例子告诉你attachEvent和addEventListener的区别
<input id="test" type="button" value="测试"> <script> var te ...
- [高并发]EntityFramework之高性能扩展
目录 简介 读写分离 指定字段更新 事务 Entity 简介 本EF扩展插件将持续更新:开源,敏捷,高性能.(由于EF Core暂未提供方便的钩子位置,暂无EF Core版本) EntityFrame ...
- Spring中实现定时调度
1, 内容简介 所谓的定时调度,是指在无人值守的时候系统可以在某一时刻执行某些特定的功能采用的一种机制,对于传统的开发而言,定时调度的操作分为两种形式: 定时触发:到某一时间点上执行某些处理操作: ...