好一个入门题
  • 板块P1683 入门
  • 楼主KY_ABC
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/1 12:29
  • 上次更新2024/10/1 15:53:17
查看原帖
好一个入门题
1175911
KY_ABC楼主2024/10/1 12:29
#include<bits/stdc++.h>
using namespace std;
int w,h;
int sum ;
int a[10010][10010];
void dfs(int x,int y){
	if(x<1 || y<1 || x>w || y>h){
		return ;
	}
	a[x][y] = 1;
	sum++;
	if(a[x+1][y] == 0){
		dfs(x+1,y);
	}
	if(a[x-1][y] == 0){
		dfs(x-1,y);
	}
	if(a[x][y+1] == 0){
		dfs(x,y+1);
	}
	if(a[x][y-1] == 0){
		dfs(x,y-1);
	}
}
char q;
int main(){
	cin>>w>>h;
	for(int i = 1;i<=w;i++){
		for(int j = 1;j<=h;j++){
			cin>>q;
			if(q == '#'){
				a[i][j] = 1;
			}
			else{
				a[i][j] = 0;
			}
		}
	}
	for(int i = 1;i<=w;i++){
		if(a[1][i] == 0){
			dfs(1,i);
		}
		if(a[w][i] == 0){
			dfs(w,i);
		}
	}
	for(int i = 1;i<=h;i++){
		if(a[1][i] == 0){
			dfs(1,i);
		}
		if(a[h][i] == 0){
			dfs(h,i);
		}
	}
	
	for(int i = 1;i<=w;i++){
		for(int j = 1;j<=h;j++){
			if(a[i][j] == 0){
				sum++;
			}
		}
	}
	cout<<sum;
	return 0;
} 

10分,求指出点(不要代码)

2024/10/1 12:29
加载中...