POJ1979---Red and Black

来源:互联网 发布:优化发展环境的讲话 编辑:程序博客网 时间:2024/05/21 17:41

题目大意:求可以达到的格子总数

分析:DFS

代码

#include <cstdio>#include <cstring>using namespace std;const int maxn = 25;char G[maxn][maxn];int w, h, vis[maxn][maxn];int sc, sl, ans;int dl[4] = {0, -1, 0, 1};int dc[4] = {1, 0, -1, 0};void dfs(int l, int c) {    for(int i = 0; i < 4; i++) {        int el = l + dl[i], ec = c + dc[i];        if(G[el][ec] != '#' && !vis[el][ec] && el >= 0 && el < h && ec >= 0 && ec < w) {            ans++;            vis[el][ec] = 1;            dfs(el, ec);        }    }}int main(){    while(scanf("%d%d", &w, &h) && w != 0 && h != 0) {        for(int i = 0; i < h; i++) {            getchar();            scanf("%s", G[i]);            for(int j = 0; j < w; j++)                if(G[i][j] == '@') {                    sl = i;                    sc = j;                }        }        ans = 1;        memset(vis, 0, sizeof(vis));        vis[sl][sc] = 1;        dfs(sl, sc);        printf("%d\n", ans);    }    return 0;}

0 0
原创粉丝点击