返回题解分享
讨论 / 题解分享/ 帖子详情

全球变暖(编程题) - 题解

#include<algorithm>
#include<iostream>
using namespace std;
char position[1010][1010];
int flagt=0;
int flag[1010][1010];
int flag2[1010][1010];
int n;

void dfs(int y,int x){
	

	if(position[y][x]=='.'||flag[y][x]||(y<1||y>n||x<1||x>n)) return ;
	
	if(position[y+1][x]!='.'&&position[y-1][x]!='.'&&position[y][x-1]!='.'&&position[y][x+1]!='.')
		flagt=1;
		
	flag[y][x]=1;
	
	dfs(y+1,x); //up
	dfs(y,x-1); //left
	dfs(y-1,x); //down
	dfs(y,x+1); //right
	
	return ;
}


int main(){
	
	int count=0;
	int count2=0;
	cin>>n;
	for(int i=1;i<=n;++i)
	for(int j=1;j<=n;++j) cin>>position[i][j];

	
	for(int i=1;i<=n;++i)
	for(int j=1;j<=n;++j){
		if (position[i][j]=='.'||flag[i][j]==1) continue;
		else{
			count++;	
			flagt=0;
			dfs(i,j);
			if(flagt) count2++;
		}
	}

	cout<<count-count2;
	
	return 0;
}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!