杭电OJ(HDOJ)1010题:Tempter of the Bone(DFS,迷宫求解)
来源:互联网 发布:网络主播服装 编辑:程序博客网 时间:2024/06/05 06:59
题意:
一只狗为了一根骨头,陷入一个迷宫当中,必须要在时间T这一时刻逃到出口,走一步花一分钟,要刚好在T分钟到达出口。
给出三个整数:
n(1<n<7):表示迷宫格子行数;
m(1<m<7):表示迷宫格子列数;
t(0<n<50):表示迷宫格子行数。
n,m,t同时为0,GAME OVER!
入口是S,口是D,障碍物X。如果在T时刻到达D,输入YES,否则输出NO。
示例输入:
4 4 5
S.X.
..X.
..XD
....
3 4 5
S.X.
..X.
...D
0 0 0
示例输出:
NO
YES
解决方案:
一种迷宫求解,只可以上下左右行走,不可以左下,右下,左上,右上行走。图的深度优先搜索的算法,只是一个普通结点(非边缘点)有四个连接点。
注意:必须要在T时刻到达,不能小于等于T。红色标记代码
#include<iostream>using namespace std;int n;//迷宫行数int m;//迷宫列数int t;//规定的分钟数int flag[10][10];//用于标记格子是否被访问char map[10][10];//地图bool success;//标记出口是否找到void Visit(int sX,int sY,int count){ if(count>t) return ; else if(map[sX][sY]=='D'&&count==t) { success=true; return; } else if(map[sX][sY]=='.'||map[sX][sY]=='S') { flag[sX][sY]=1; if(sY+1<m&&flag[sX][sY+1]==0) Visit(sX,sY+1,count+1);//向东(右)移动一格 if(sY-1>=0&&flag[sX][sY-1]==0) Visit(sX,sY-1,count+1);//向西(左)移动一格 if(sX+1<n&&flag[sX+1][sY]==0) Visit(sX+1,sY,count+1);//向南(下)移动一格 if(sX-1>=0&&flag[sX-1][sY]==0) Visit(sX-1,sY,count+1);//向北(上)移动一格 flag[sX][sY]=0; }}int main(){ int i,j,sX,sY; while((cin>>n>>m>>t)&&(m+n+t)) { for(i=0; i<n; i++)//输入迷宫 cin>>map[i]; success=false; for(i=0; i<n; i++) for(j=0; j<m; j++) { flag[i][j]=0; if(map[i][j]=='S') { sX=i; sY=j; } } Visit(sX,sY,0); if(success) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0;}
0 0
- 杭电OJ(HDOJ)1010题:Tempter of the Bone(DFS,迷宫求解)
- 【杭电oj】1010 - Tempter of the Bone(dfs,奇偶剪枝,好题)
- 【DFS】hdu 1010 Tempter of the Bone(迷宫)
- HDOJ 题目1010Tempter of the Bone(搜索,dfs)
- HDOJ 1010 Tempter of the Bone(dfs)
- HDOJ 1010 Tempter of the Bone (DFS && 奇偶剪枝)
- HDOJ 1010 Tempter of the Bone(DFS奇偶剪枝)
- HDOJ 1010 Tempter of the Bone (DFS)
- HDOJ 1010 Tempter of the Bone(剪枝+DFS)
- HDOJ 1010 Tempter of the Bone(dfs)
- HDoj-1010-Tempter of the Bone-DFS
- hdoj 1010Tempter of the Bone【DFS】
- HDOJ 1010-Tempter of the Bone【dfs】
- HDOJ.1010 Tempter of the Bone (DFS)
- Tempter of the Bone(杭电1010)(DFS+奇偶剪枝)
- 杭电1010——Tempter of the Bone(DFS、剪枝)
- 杭电1010Tempter of the Bone(dfs 奇偶剪枝)
- hdoj Tempter of the Bone 1010 (DFS+奇偶剪枝) 好题
- C++ is a bitch, But i Love it!(更新,已无爱。)
- c++中explicit
- 决策树与R语言(RPART)
- GCC编译选项补充
- C# Huffman编译码细节
- 杭电OJ(HDOJ)1010题:Tempter of the Bone(DFS,迷宫求解)
- 杨辉三角
- linux snprintf获取字符串中的某一段的长度问题
- uva 10487
- hdu-1282-回文数猜想( 存int类型操作 )
- Hash Table 开放寻址处理冲突
- OpenWRT定时关闭WIFI
- JAVA - 类和对象
- re---Python的正则表达式模块