UVA 784 - Maze Exploration

水题,了解了dfs后,这样的题就水的很了。

代码如下:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char ch[50][100];
void dfs(int i, int j)
{
    if(ch[i][j] == '#'||ch[i][j]=='X')return;
    ch[i][j] = '#';
    dfs(i-1, j-1);dfs(i-1, j);dfs(i-1, j+1);
    dfs(i, j-1);              dfs(i, j+1);
    dfs(i+1, j-1);dfs(i+1, j);dfs(i+1, j+1);
}
int main ()
{
    int n, d;
    cin>>n;cin.ignore();
    while(n--)
    {
        memset(ch,'X',sizeof(ch));
        for(int i = 0;; i++)
        {
            gets(ch[i]);
            if(ch[i][0] == '_')
            {
                d = i;
                break;
            }
        }
        for(int i = 0; i < d; i++)
            for(int j = 0; ch[i][j]; j++)
            {
                if(ch[i][j] == '*')
                {
                    ch[i][j] = ' ';
                    dfs(i, j);
                }
            }
        for(int i = 0; i <= d; i++,cout<<endl)
        for(int j = 0; ch[i][j];j++)
        cout<<ch[i][j];
    }
    return 0;
}


posted on 2012-11-16 21:01  Primo...  阅读(127)  评论(0)    收藏  举报