求救
查看原帖
求救
338786
mushroom_knight楼主2020/5/3 12:40

再次求救

#include<bits/stdc++.h>
using namespace std;
int n,m;
char b[200][200];
inline void dfs(int x,int y){
	if(x<1||y<1||x>n||y>m){
		return;
	}
	if(b[x][y+1]!='0'){
		b[x][y+1]='0';
		dfs(x,y+1);
	}
	if(b[x][y-1]!='0'){
		b[x][y-1]='0';
		dfs(x,y-1);
	}
	if(b[x+1][y]!='0'){
		b[x+1][y]='0';
		dfs(x+1,y);
	}
	if(b[x-1][y]!='0'){
		b[x-1][y]='0';
		dfs(x-1,y);
	}
}
inline int read(){
	int tot=0;
	int x=0;
	int f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-'){
			f=-1;
		}
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
inline void write(int x){
    char F[200];
    int tmp=x>0?x:-x ;
    if(x<0){ 
		putchar('-');
    }
    int cnt=0 ;
       while(tmp>0){
           F[cnt++]=tmp%10+'0';
           tmp/=10;
       }
       while(cnt>0){
			putchar(F[--cnt]);
       }
}
int main(){
	int tot=0;
	n=read();
	m=read();
	for(register int i=0;i<n;++i){
		for(register int j=0;j<m;++j){
			b[i][j]=getchar();
		}
	}
	for(register int i=0;i<n;++i){
		for(register int j=0;j<m;++j){
			if(!b[i][j]=='0'){
				b[i][j]='0';
				tot++;
				dfs(i,j);	
			}
		}
	}
    write(tot);
    return 0;
}
2020/5/3 12:40
加载中...