POJ 3984 迷宫问题 (DFS(深度优先搜索))
来源:互联网 发布:3d算法入门 编辑:程序博客网 时间:2024/05/21 08:52
迷宫问题
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 6322 Accepted: 3673
Description
定义一个二维数组:
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
Output
左上角到右下角的最短路径,格式如样例所示。
Sample Input
0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0
Sample Output
(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)
思路: DFS算法
import java.io.*;import java.util.*;public class Main {public static int map[][] = new int[5][5];public static int fx[] = { 0, 0, 1, -1 };public static int fy[] = { 1, -1, 0, 0 };public static int px, py;public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));while (sc.hasNextInt()) {for (int i = 0; i < map.length; i++) {for (int j = 0; j < map[i].length; j++) {map[i][j] = sc.nextInt();}}map[0][0] = 3;//标记走过px = 0;py = 0;DFS(0, 0);}}public static void DFS(int p1, int p2) {if (p1 == map.length - 1 && p2 == map[0].length - 1){out();return;}else {//四个方向进行判定for (int i = 0; i < 4; i++) {int px = p1 + fx[i];int py = p2 + fy[i];if (check(px, py)) {map[px][py] = 3;//标记走过的路DFS(px, py);}}}}public static void out() {for (int i = 0; i <5; i++) {for (int j = 0; j <5; j++) {if (map[i][j] == 3) {System.out.println("(" + i + ", " + j + ")");}}}}public static boolean check(int p1, int p2) {if (p1 < 0 || p1 > map[0].length - 1 || p2 < 0 || p2 > map.length - 1|| map[p1][p2] != 0)return false;elsereturn true;}}
- POJ 3984 迷宫问题 (DFS(深度优先搜索))
- 深度优先搜索DFS(迷宫问题)
- DFS深度优先搜索之走迷宫
- 深度优先搜索DFS 走迷宫
- dfs走迷宫_深度优先搜索
- POJ-3984 迷宫问题 广度优先搜索
- POJ 1321 棋盘问题(DFS深度优先搜索/回溯法)
- POJ 1321 棋盘问题(DFS深度优先搜索/回溯法)
- 经典迷宫问题DFS 深度优先
- Matlab 深度优先搜索求解迷宫问题
- 用深度优先搜索解迷宫问题
- 深度优先搜索求解迷宫问题
- 迷宫问题(深度优先搜索)
- ACM-POJ 1562 DFS 深度优先搜索
- ACM-POJ 1979 DFS 深度优先搜索
- 深度优先搜索dfs(poj 1655)
- POJ-1979 深度优先搜索DFS
- 迷宫问题|深度优先搜索&广度优先搜索
- DLL封装学习记录
- hdu 4630 No Pain No Game
- 庞果答题:亿阳信通:不可表示的数 的一个人见解(8-13第二次更新。)
- HDU 1581 Square ( DFS(深度优先搜索))
- HDU 4584 Building bridges
- POJ 3984 迷宫问题 (DFS(深度优先搜索))
- Lock的使用 java多线程
- 06-php雇员管理系统-实现显示雇员信息列表分页改进(可以处理大数据100000条)
- strut2学习(8)——指定多个配置文件
- poj2778之AC自动机+矩阵快速幂
- hdu 4638 Group
- 一步一步学数据结构之1--n(二叉树)
- win32多线程编程与锁
- 关联映射之③:单向1--->N关联