题目链接: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

Problem Description
You're in space.
You want to get home.
There are asteroids.
You don't want to hit them.
Input
Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following description, and there will be no blank lines separating data sets.

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.

Output
For each data set, there will be exactly one output set, and there will be no blank lines separating output sets.

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.

Sample Input
START 1 O 0 0 0 0 0 0 END START 3 XXX XXX XXX OOO OOO OOO XXX XXX XXX 0 0 1 2 2 1 END START 5 OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO XXXXX XXXXX XXXXX XXXXX XXXXX OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO OOOOO 0 0 0 4 4 4 END
Sample Output
1 0 3 4 NO ROUTE
Source
South Central USA 2001
Recommend
zf
简单搜索题,一次水过。。。。数据不大,果断用DFS。。。
 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简单搜索)相关推荐

  1. POJ 1321-棋盘问题-简单搜索DFS

    POJ 1321-棋盘问题-简单搜索DFS Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编 ...

  2. 计蒜客-T1284 夫子云游(简单搜索dfs)

    父子云游 题目链接:https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1284 题目描述 改编自猫腻所著的同名小说<将夜>目前 ...

  3. 图:DFS(深度优先搜索)图解分析代码实现

    文章目录 一.简介 二.图的建立 2.1建立图类 2.2建立图 三.DFS 3.1图解 3.2代码 一.简介 图的DFS(深度优先搜索)与BFS(广度优先搜索)是图的两种遍历方式. 主要区别在于当到达 ...

  4. hdu 1254(dfs+bfs+优先队列)

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Desc ...

  5. 【算法】蓝桥杯dfs深度优先搜索之排列组合总结

    [导航] 上一篇文章 → <[算法]蓝桥杯dfs深度优先搜索之凑算式总结>   为了重申感谢之意,再次声明下文的大部分灵感均来自于[CSDN]梅森上校<JAVA版本:DFS算法题解两 ...

  6. kuangbin 专题一 简单搜索

    kuangbin 专题一 简单搜索 1.POJ1321棋盘问题[DFS] 代码 自己的想法 2.POJ2251Dungeon Master[三维空间BFS] 代码 自己的想法 3.POJ3278 Ca ...

  7. “暴力美学1”——DFS深度优先搜索

    作为新时代青年,"暴力"二字似乎离我们十分遥远,大多数时候我们只能够在电影或者电视剧上接触这个概念 暴力二字或许是个贬义词,但若是我们在后面加上美学二字,或许就是一个值得推敲的词汇 ...

  8. 张三踩瓷砖:C++用DFS深度优先搜索解POJ1979 Red and Black问题

    POJ1979 Red and Black 题目链接: POJ1979 Red and Black 简单理解一下题目: 张三站在一个长方形的房间里,房间里铺满了方形瓷砖,瓷砖有红色和黑色两种,他站在其 ...

  9. POJ - 2386 (dfs简单应用)

    POJ - 2386 (dfs深度优先搜索) 题目正文: Due to recent rains, water has pooled in various places in Farmer John' ...

最新文章

  1. 包云岗:是什么造成了学术界的科学精神之殇?
  2. 简单说下COALESCE这个日常使用的函数
  3. 基于Flask开发企业级REST API应用(一)
  4. Chapter 1: 使用引用类型
  5. 支持WI-FI的blackberry
  6. storm the 少儿英语_米粒英语绘本课堂——The Snowstorm
  7. 【应急响应】2020应急响应基础-Windows、Linux合集
  8. 智能家居通信协议科普,什么户型选择什么产品一文看懂
  9. 北大医学英语和计算机,医学英语专业本科生张泉同学在SSCI期刊发表论文
  10. Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)
  11. 在Windows中如何通过命令行创建快捷方式
  12. 刚学会的画丝滑的箭头ppt
  13. 自己搭建无线音乐服务器,建立自己的音乐库 Aurender ACS10 音乐服务器
  14. 使用Arduino实现一个简易倒车雷达
  15. MySQL 用sql语句格式化时间和日期
  16. MACD、SAR、KDJ、DBCD
  17. 论网站按钮的设计艺术与生命周期
  18. s3c6410时钟体系
  19. 周鸿祎:把职业程序员进行到底
  20. mysql之索引原理与慢查询优化

热门文章

  1. Python迭代列表
  2. Android ListView示例教程
  3. while 循环java_Java做while循环
  4. jenkins部署war包到容器(tomcat)
  5. Windows命令行安装程序管理工具 - Scoop
  6. Flutter安装、配置、初体验 windows 版
  7. 用Prettier和ESlint来统一提交代码
  8. HTML(八)------ 布局
  9. 《CUDA C编程权威指南》——2.2 给核函数计时
  10. widows下 python环境变量配置