HDU 1240 Asteroids!(DFS简单搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240
Asteroids!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2383 Accepted Submission(s): 1612
You want to get home.
There are asteroids.
You don't want to hit them.
A single data set has 5 components:
Start line - A single line, "START N", where 1 <= N <= 10.
Slice list - A series of N slices. Each slice is an N x N matrix representing a horizontal slice through the asteroid field. Each position in the matrix will be one of two values:
'O' - (the letter "oh") Empty space
'X' - (upper-case) Asteroid present
Starting Position - A single line, "A B C", denoting the <A,B,C> coordinates of your craft's starting position. The coordinate values will be integers separated by individual spaces.
Target Position - A single line, "D E F", denoting the <D,E,F> coordinates of your target's position. The coordinate values will be integers separated by individual spaces.
End line - A single line, "END"
The origin of the coordinate system is <0,0,0>. Therefore, each component of each coordinate vector will be an integer between 0 and N-1, inclusive.
The first coordinate in a set indicates the column. Left column = 0.
The second coordinate in a set indicates the row. Top row = 0.
The third coordinate in a set indicates the slice. First slice = 0.
Both the Starting Position and the Target Position will be in empty space.
A single output set consists of a single line. If a route exists, the line will be in the format "X Y", where X is the same as N from the corresponding input data set and Y is the least number of moves necessary to get your ship from the starting position to the target position. If there is no route from the starting position to the target position, the line will be "NO ROUTE" instead.
A move can only be in one of the six basic directions: up, down, left, right, forward, back. Phrased more precisely, a move will either increment or decrement a single component of your current position vector by 1.
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 char g[20][20][20]; 6 int n,sx,sy,sz,ex,ey,ez,ok; 7 int dis[6][3]={{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}}; 8 struct node 9 { 10 int x; 11 int y; 12 int z; 13 int time; 14 }; 15 void getdata() 16 { 17 int i,j,k=0; 18 char s[20]; 19 memset(g,'\0',sizeof(g)); 20 for(k=0;k<n;k++) 21 { 22 for(i=0;i<n;i++) 23 { 24 scanf("%s",s); 25 for(j=0;j<n;j++) 26 g[i][j][k]=s[j]; 27 } 28 } 29 scanf("%d %d %d",&sx,&sy,&sz); 30 scanf("%d %d %d",&ex,&ey,&ez); 31 scanf("%s",s); 32 getchar(); 33 ok=0; 34 } 35 void dfs(node po) 36 { 37 int i,j; 38 node te; 39 if(po.x==ex&&po.y==ey&&po.z==ez) 40 { 41 ok=1; 42 printf("%d %d\n",n,po.time); 43 return ; 44 } 45 for(i=0;!ok&&i<6;i++) 46 { 47 te.x=po.x+dis[i][0]; 48 te.y=po.y+dis[i][1]; 49 te.z=po.z+dis[i][2]; 50 te.time=po.time+1; 51 if(!(te.x>=0&&te.x<n&&te.y>=0&&te.y<n&&te.z>=0&&te.z<n&&g[te.x][te.y][te.z]=='O'))continue; 52 g[te.x][te.y][te.z]='X'; 53 dfs(te); 54 } 55 } 56 int main() 57 { 58 node po; 59 while(scanf("START %d",&n)!=EOF) 60 { 61 getchar(); 62 getdata(); 63 po.x=sx; 64 po.y=sy; 65 po.z=sz; 66 po.time=0; 67 dfs(po); 68 if(!ok)printf("NO ROUTE\n"); 69 } 70 return 0; 71 }
转载于:https://www.cnblogs.com/lfeng/archive/2013/05/09/3068695.html
HDU 1240 Asteroids!(DFS简单搜索)相关推荐
- POJ 1321-棋盘问题-简单搜索DFS
POJ 1321-棋盘问题-简单搜索DFS Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编 ...
- 计蒜客-T1284 夫子云游(简单搜索dfs)
父子云游 题目链接:https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1284 题目描述 改编自猫腻所著的同名小说<将夜>目前 ...
- 图:DFS(深度优先搜索)图解分析代码实现
文章目录 一.简介 二.图的建立 2.1建立图类 2.2建立图 三.DFS 3.1图解 3.2代码 一.简介 图的DFS(深度优先搜索)与BFS(广度优先搜索)是图的两种遍历方式. 主要区别在于当到达 ...
- hdu 1254(dfs+bfs+优先队列)
推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Desc ...
- 【算法】蓝桥杯dfs深度优先搜索之排列组合总结
[导航] 上一篇文章 → <[算法]蓝桥杯dfs深度优先搜索之凑算式总结> 为了重申感谢之意,再次声明下文的大部分灵感均来自于[CSDN]梅森上校<JAVA版本:DFS算法题解两 ...
- kuangbin 专题一 简单搜索
kuangbin 专题一 简单搜索 1.POJ1321棋盘问题[DFS] 代码 自己的想法 2.POJ2251Dungeon Master[三维空间BFS] 代码 自己的想法 3.POJ3278 Ca ...
- “暴力美学1”——DFS深度优先搜索
作为新时代青年,"暴力"二字似乎离我们十分遥远,大多数时候我们只能够在电影或者电视剧上接触这个概念 暴力二字或许是个贬义词,但若是我们在后面加上美学二字,或许就是一个值得推敲的词汇 ...
- 张三踩瓷砖:C++用DFS深度优先搜索解POJ1979 Red and Black问题
POJ1979 Red and Black 题目链接: POJ1979 Red and Black 简单理解一下题目: 张三站在一个长方形的房间里,房间里铺满了方形瓷砖,瓷砖有红色和黑色两种,他站在其 ...
- POJ - 2386 (dfs简单应用)
POJ - 2386 (dfs深度优先搜索) 题目正文: Due to recent rains, water has pooled in various places in Farmer John' ...
最新文章
- 包云岗:是什么造成了学术界的科学精神之殇?
- 简单说下COALESCE这个日常使用的函数
- 基于Flask开发企业级REST API应用(一)
- Chapter 1: 使用引用类型
- 支持WI-FI的blackberry
- storm the 少儿英语_米粒英语绘本课堂——The Snowstorm
- 【应急响应】2020应急响应基础-Windows、Linux合集
- 智能家居通信协议科普,什么户型选择什么产品一文看懂
- 北大医学英语和计算机,医学英语专业本科生张泉同学在SSCI期刊发表论文
- Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)
- 在Windows中如何通过命令行创建快捷方式
- 刚学会的画丝滑的箭头ppt
- 自己搭建无线音乐服务器,建立自己的音乐库 Aurender ACS10 音乐服务器
- 使用Arduino实现一个简易倒车雷达
- MySQL 用sql语句格式化时间和日期
- MACD、SAR、KDJ、DBCD
- 论网站按钮的设计艺术与生命周期
- s3c6410时钟体系
- 周鸿祎:把职业程序员进行到底
- mysql之索引原理与慢查询优化