#6 90分
查看原帖
#6 90分
829135
thd21341楼主2022/11/14 11:48
#include <stdio.h>
#define xx 0
#define yy 1
int main (void)
{
	int dif_x[4]={1,0,-1,0};
	int dif_y[4]={0,1,0,-1};
	int n,m;
	scanf ("%d %d",&n,&m);
	
	int rectangle_number[n][m];
	for (int i=0;i<n;i++){
		for (int y=0;y<m;y++){
			scanf ("%1d",&rectangle_number[i][y]);
		}	
	} 
	
	int flag[200][200]={0};
		
	int count=0;
	int xx_now,yy_now;
	for (int i=0;i<n;i++){
		for (int y=0;y<m;y++){
			if (flag[i][y]==1||rectangle_number[i][y]==0){
				continue;
			}else {
				int memory[101][2];
				int head=0,tail=1;
				memory[head+1][xx]=i;
				memory[head+1][yy]=y; 
				
				while (head<tail){
					head++;
					for (int l=0;l<4;l++){
						xx_now=memory[head][xx]+dif_x[l];
						yy_now=memory[head][yy]+dif_y[l];
						if (rectangle_number[xx_now][yy_now]!=0&&xx_now>=0&&xx_now<n&&yy_now>=0&&yy_now<m&&flag[xx_now][yy_now]==0){
							tail++;
							memory[tail][xx]=xx_now;
							memory[tail][yy]=yy_now;
							flag[xx_now][yy_now]=1;
							
						}
					}	
				}
				count++;
			}
		}
	}
	printf ("%d",count);
	return 0;
}
2022/11/14 11:48
加载中...