关闭

poj Red and Black

标签: pojdfs
109人阅读 评论(0) 收藏 举报
分类:

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

一个最基础的dfs搜索题

//#include <bits/stdc++.h>
#include "iostream"
#include "cstring"
using namespace std;

typedef long long ll;

int k[25][25];//标记数组
char c[25][25];
int ans = 0; //可走的步数

void dfs(int m, int n,int i,int j,char c[25][25]) {

    if(c[i][j] == '#') return;
    if(!k[i][j]) {
        ans++;
        k[i][j] = 1;
    }
    //递归搜索
    if(i != 0 && !k[i-1][j]) dfs(m,n,i-1,j,c);
    if(i != m-1 && !k[i+1][j]) dfs(m,n,i+1,j,c);
    if(j != 0 && !k[i][j-1]) dfs(m,n,i,j-1,c);
    if(j != n-1 && !k[i][j+1]) dfs(m,n,i,j+1,c);
}


int main(){

    ios::sync_with_stdio(false);

    int m,n,x,y;
    while(cin >> m >> n && (m ||n)) {

         memset(k,0,sizeof(k));
         for(int i = 0; i < n; i++)
            for(int j = 0; j < m; j++) {
                cin >> c[i][j];
                if(c[i][j] == '@'){
                    x = i;
                    y = j;
                }
         }
         dfs(n,m,x,y,c);
         cout << ans << endl;
         ans = 0;

    }


    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9455次
    • 积分:400
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类