大佬们,捞一捞,改了很久,为什么样例一一直都是16
查看原帖
大佬们,捞一捞,改了很久,为什么样例一一直都是16
1288805
hnyn楼主2024/4/12 20:34
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std; 
const int N=600;
int n,m;
char g[N][N]={'0'};
bool st[N][N];
int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
long long cnt=0;
void dfs(int a,int b){
    st[a][b]=true;
    g[a][b]='*';
    for(int i=0;i<4;i++){
        int x=a+dx[i],y=b+dy[i];
        if(x>=0&&x<=n+1&&y>=0&&y<=m+1&&st[x][y]==false&&g[x][y]=='0'){
            dfs(x,y);
        }
    }
}
int main(){
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            scanf(" %c",&g[i][j]);
        }
    }
    dfs(0,0);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(g[i][j]=='0')cnt++;
        }
    }
    printf("%lld",cnt);
    return 0;
}
2024/4/12 20:34
加载中...