求助大佬
查看原帖
求助大佬
271169
在春楼主2020/9/4 19:55
#include<bits/stdc++.h>
using namespace std;
int n,m;
int dt[300][300];
int mx[4]={0,1,0,-1},my[4]={1,0,-1,0};
int sum[62500];
int num;
int ans;
void dfs(int x,int y){
	
	num++;
	dt[x][y]=0;
	for(int i=0;i<4;i++){
		if(dt[x+mx[i]][y+my[i]]==1)
			dfs(x+mx[i],y+my[i]);
	}
	
}
int main(){
	while(cin>>n>>m&&n!=0&&m!=0){
		 ans=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>dt[i][j]; 
			}
		} 
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(dt[i][j]==1){
					num=0;
					dfs(i,j);
					ans++;//我只要计算我联通的就可以拉  
					sum[num]++; 						
				}
			}
		}
		cout<<ans<<endl;
		for(int i=0;i<62500;i++){
			if(sum[i]!=0){
				cout<<i<<" "<<sum[i]<<endl;
			}
		}
	}
	 
	return 0;
}

在给的样例测试中 在本地测试通过,但是提交就出了问题。 不知道错误点在哪里,求助大佬。

2020/9/4 19:55
加载中...