首页 > 其他 > 详细

地、颜色、魔法(dfs)

时间:2020-05-11 10:44:35      阅读:54      评论:0      收藏:0      [点我收藏+]

https://ac.nowcoder.com/acm/problem/20898

两个条件

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
int n,m;
vector<char> a[maxn];
int ans;
int t,flag;
int dp[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};
void dfs(int x,int y){
    t++;
    a[x][y] = @;
    for(int i = 0; i < 4; i++) {
        int dx = x + dp[i][0],dy = y + dp[i][1];
        if (dx < 0 || dx >= n || dy < 0 || dy >= m){
            flag = 1;
            continue;
        }
        if(a[dx][dy] == .)
            dfs(dx,dy);
    }
}
int main(){
   // freopen("in","r",stdin);
    ios::sync_with_stdio(0);
    cin >> n >> m;
    char c;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++) {
            cin >> c;
            a[i].push_back(c);
        }
    }
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            if(a[i][j] == #)
                ans++;
            else if(a[i][j] == .){
                flag = 0;
                t = 0;
                dfs(i,j);
                if(!flag){
                    ans += t;
                }
            }
        }
    }
    cout << ans << endl;
    return 0;
}

 

地、颜色、魔法(dfs)

原文:https://www.cnblogs.com/xcfxcf/p/12867272.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!