码迷,mamicode.com
首页 > 其他好文 > 详细

走迷宫(同一)

时间:2016-11-29 07:41:18      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:题目   ios   ibm   online   udf   while   arc   blog   php   

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=58

有关深搜广搜知识的讲解PPT链接:(一)http://wenku.baidu.com/link?url=uuVluDfJP-gW6FiV0F8J4s4VuEOU__uqW1nFjuOO-id9ntGdqXLLvwDN0eR3akZMKP_iBmA0xPGAE-SOwdWyN21HJoXrHbd7cvSx2zRkZBa

(二)http://wenku.baidu.com/view/67228040580216fc710afd1b.html?from=search

//走迷宫(一)
//前提:迷宫图已知。给你一个起点和终点
//问题:至少几步到达终点
//问题隐含条件:1、肯定走得到终点;2,、求最短路径的问题(可以用队列+BFS)


#include<iostream>
using namespace std;

#define min(a,b) a<b?a:b

int Map[9][9] = { 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 1, 0, 0, 1, 0, 1,
1, 0, 0, 1, 1, 0, 0, 0, 1,
1, 0, 1, 0, 1, 1, 0, 1, 1,
1, 0, 0, 0, 0, 1, 0, 0, 1,
1, 1, 0, 1, 0, 1, 0, 0, 1,
1, 1, 0, 1, 0, 1, 0, 0, 1,
1, 1, 0, 1, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1 };

int a, b, c, d, num;

int dfs(int x, int y, int dep)   //dep代表当前DFS的深度
{
    if (Map[x][y])   //if(走不下去了)
    {
        return 1;
    }
    if (x == c&&y == d)  //if(找到解了)
    {
        num = min(dep, num);
        return 0;
    }

    //枚举下一种情况,DFS(...,dep+1)
    Map[x][y] = 1;
    dfs(x - 1, y, dep+1);
    dfs(x + 1, y, dep + 1);
    dfs(x, y - 1, dep + 1);
    dfs(x, y + 1, dep + 1);
    Map[x][y] = 0;

}

int main()
{
    int n;
    cin >> n;
    while (n--)
    {
        num = 10000;
        cin >> a >> b>>c>>d;
        dfs(a,b,0);
        cout << num << endl;
    }
}

相关链接:http://www.cnblogs.com/zhengbin/p/4495358.html

走迷宫(同一)

标签:题目   ios   ibm   online   udf   while   arc   blog   php   

原文地址:http://www.cnblogs.com/Strugglinggirl/p/6112084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!