30pts,样例全过,悬关!!!
查看原帖
30pts,样例全过,悬关!!!
1398620
Yanami___Anna楼主2024/8/30 14:32

用的dfs

#include<bits/stdc++.h>
using namespace std;
const int N=501;
char mp[N][N];
bool vis[N][N];
int d[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};
int n,ans,m;
void dfs(int x,int y) {
	if(x<0||x>n+1||y<0||y>n+1||mp[x][y]=='*')return;
	mp[x][y]='*';
	for(int i=0; i<4; i++) {
		dfs(x+d[i][0],y+d[i][1]);
	}
}
int main() {
	cin>>n>>m;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++) {
			cin>>mp[i][j];
		}
	dfs(0,0);
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			if(mp[i][j]=='0')
				ans++;
	cout<<ans;
	return 0;
}
2024/8/30 14:32
加载中...