zoukankan      html  css  js  c++  java
  • lightoj 1012

    水题,dfs

    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int MAXN = 22;
    int W, H;
    char str[MAXN][MAXN], vis[MAXN][MAXN];
    int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
    bool inMap(int x, int y){
        return x >= 0 && x < H && y >= 0 && y < W;
    }
    void dfs(int x, int y){
        vis[x][y] = 1;
        for(int i = 0;i < 4;i ++){
            int xx = dir[i][0] + x, yy = dir[i][1] + y;
            if(inMap(xx, yy) && !vis[xx][yy] && str[xx][yy] == '.') dfs(xx, yy);
        }
    }
    int main(){
        int t,x,y,CASE(0);
        scanf("%d", &t);
        while(t--){
            scanf("%d%d", &W, &H);
            for(int i = 0;i < H;i ++){
                scanf("%s", str[i]);
                for(int j = 0;j < W;j ++) {
                    if(str[i][j] == '@') x = i, y = j;
                }
            }
            memset(vis, 0, sizeof vis);
            int ans = 0;
            dfs(x, y);
            for(int i = 0;i < H;i ++)
                for(int j = 0;j < W;j ++) ans += vis[i][j];
            printf("Case %d: %d
    ", ++CASE, ans);
        }
        return 0;
    }


  • 相关阅读:
    二维数组和指向指针的指针
    多路复用构建高性能服务器
    disque概要
    漫谈云计算与SOA (1)
    zeromq
    自定义内存分配
    基于行的操作
    反应器类型的操作
    多个流,简短的读和写
    缓存
  • 原文地址:https://www.cnblogs.com/anhuizhiye/p/3933168.html
Copyright © 2011-2022 走看看