dfs 30pts
查看原帖
dfs 30pts
1007419
xiao__楼主2023/7/18 21:35
#include<bits/stdc++.h>
#define for(i,k) for(int i=1;i<=k;i++)
using namespace std;
int n,m,ans;
int dx[15]{0,1,-1,0,0};
int dy[15]{0,0,0,1,-1};
char a[505][505];
void dfs(int x,int y){
	for(i,4){
		int nx=x+dx[i];
		int ny=y+dy[i];
		if(a[nx][ny]!='*'&&nx>=0&&ny>=0&&nx<=n+1&&ny<=n+1){
			a[nx][ny]='*';
			dfs(nx,ny);
		}
	}
}
int main(){
	cin>>n>>m;
	for(i,n){
		for(j,m){
			if(i-1==0){
				a[i-1][j]='0';
			}
			if(j-1==0){
				a[i][j-1]='0';
			}
			if(i==n){
				a[i+1][j]='0';
			}
			if(j==m){
				a[i][j+1]='0';
			}
			cin>>a[i][j];
		}
	}
	dfs(1,1);
	for(i,n){
		for(j,m){
			
			if(a[i][j]=='0'){
				ans++;
			}
			//cout<<a[i][j];
		}
		//puts("");
	}
	cout<<ans;
	return 0;
}
2023/7/18 21:35
加载中...