社区讨论

好一个入门题

P1683入门参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m1pxw0w6
此快照首次捕获于
2024/10/01 12:29
去年
此快照最后确认于
2024/10/01 15:53
去年
查看原帖
C
#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分,求指出点(不要代码)

回复

1 条回复,欢迎继续交流。

正在加载回复...