LuoguP1596 [USACO10OCT]湖计数Lake Counting 题解

深搜即可,代码如下:

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

char a[200][200];
int dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={-1,0,1,-1,1,-1,0,1};
int ans,n,m;
void dfs(int x,int y) {
    a[x][y]='.';
    for(int i=0; i<8; ++i) {
        int xx=x+dx[i];
        int yy=y+dy[i];
        if((xx>=0)&&(xx<n)&&(yy>=0)&&(yy<m)&&(a[xx][yy]=='W'))
            dfs(xx,yy);
    }
}
int main() {
    cin>>n>>m;
    for(int i=0; i<n; ++i)
        for(int j=0; j<m; ++j)
            cin>>a[i][j];
    for(int i=0; i<n; ++i)  
        for(int j=0; j<m; ++j)  
            if(a[i][j]=='W') {
                dfs(i,j);
                ans++;
            }
    cout<<ans<<endl;
    return 0;
}
上一篇:有余额2000,两个线程每次取200 (Thread方法锁)


下一篇:vue页面传参和接参