poj 3984 迷宫问题(dfs)

题目链接http://poj.org/problem?id=3984

思路:经典型的DFS题目。搜索时注意剪枝:越界处理,不能访问处理。

 

代码:

#include <iostream>
using namespace std;

const int MAX_N = 15;
int map[MAX_N][MAX_N];
typedef struct Node
{
    int x;
    int y;
}Road;
Road vis[MAX_N];

int SearchRoad( int i, int j, int count )
{
    if ( i == 4 && j == 4 )
    {
        vis[count].x = i;
        vis[count].y = j; 
        for ( int i = 0; i <= count; ++i )
            printf( "(%d, %d)\n", vis[i].x, vis[i].y );
    }
    else
    if ( i >= 5 || j >= 5 || map[i][j] == 1 )
        return 0;
    else
    {
        vis[count].x = i;
        vis[count].y = j;

        count++;
        SearchRoad( i+1, j, count );
        SearchRoad( i, j+1, count );
    }

    return 0;
}


int main()
{
    for ( int i = 0; i < 5; ++i )
        for ( int j = 0; j < 5; ++j )
            scanf( "%d", &map[i][j] );

    SearchRoad( 0, 0, 0 );
    return 0;
}

 

posted @ 2014-10-12 18:18  Leptus  阅读(232)  评论(0编辑  收藏  举报