求助,预期输出与实际输出不一样
  • 板块学术版
  • 楼主Xiaonao_Dali
  • 当前回复16
  • 已保存回复16
  • 发布时间2025/7/25 11:45
  • 上次更新2025/7/25 16:37:39
查看原帖
求助,预期输出与实际输出不一样
1076621
Xiaonao_Dali楼主2025/7/25 11:45
#include<bits/stdc++.h>
using namespace std;
int fa[905];
char g[305][305];
int dir[2][2]={{0,1},{1,0}};
int Find(int x){
    return !fa[x]?x:fa[x]=Find(fa[x]);
}
bool Merge(int x,int y){
    int fx=Find(x),fy=Find(x);
    if(fx==fy) return false;
    fa[fx]=fy;
    return true;
}
int main(){
    int m,n;
    cin>>m>>n;
    for(int i=0;i<m*n;i++) fa[i]=0;
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            cin>>g[i];
        }
    }
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            if(g[i][j]=='0') continue;
            int idx=i*n+j;
            for(int d=0;d<2;d++){
                int ni=i+dir[d][0],nj=j+dir[d][1];
                if(ni<m&&nj<n&&g[ni][nj]=='1'){
                    int nidx=ni*n+nj;
                    Merge(idx,nidx);
                }
            }
        }
    }
    int cnt=0;
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            if(g[i][j]=='1'){
                int idx=i*n+j;
                if(Find(idx)==idx){
                    cnt++;
                }
            }
        }
    }
    cout<<cnt;
}

in:

4 5
11110
11010
11000
00000

预期:

1

实际

0
2025/7/25 11:45
加载中...