poj Red and Black

来源:互联网 发布:贵州网络贩枪 编辑:程序博客网 时间:2024/05/16 04:22

题目链接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
原创粉丝点击