新手简单码,感觉可以为什么不行呢?犇犇们救救孩子
查看原帖
新手简单码,感觉可以为什么不行呢?犇犇们救救孩子
1027033
wzhbsm楼主2024/10/2 16:18
#include<bits/stdc++.h>
using namespace std;
int c[109][109],xb[109][109],a,b,su=0;
int main()
{
	cin>>a>>b;
	for(int i=1;i<=a;i++)
	{
		for(int j=1;j<=b;j++)
		{
			cin>>c[i][j];
		}
	}
	for(int i=0;i<=a+1;i++)//边界 
	{
		for(int j=0;j<=b+1;j++)//边界 
		{
			xb[i][j]=0;
		}
	}
/////////////////////////////////////////////
	for(int i=1;i<=a;i++)
	{
		for(int j=1;j<=b;j++)
		{
			if(c[i][j]!=0&&xb[i][j]==0)//非零且未被标记 
			{
				if(c[i][j-1]==0)su++;xb[i][j]=su;//左面没有细胞是零(细胞开始) ,计数 
				
				if(c[i][j+1]!=0)//右面非零属于本胞 ,标记 
				xb[i][j+1]=xb[i][j];
				
				if(c[i][j-1]!=0)//左面面非零属于本胞 ,标记 
				xb[i][j-1]=xb[i][j];
				
				if(c[i+1][j]!=0)//上面非零属于本胞 ,标记 
				xb[i+1][j]=xb[i][j];
				
				if(c[i-1][j]!=0)//下面非零属于本胞 ,标记 
				xb[i-1][j]=xb[i][j];
			}
		
		}
	}
	cout<<su; //输出细胞数 
	return 0;
}
2024/10/2 16:18
加载中...