深搜新手快亲啊
2026-07-01 12:34:26
发布于:北京
8阅读
0回复
0点赞
详情见https://www.luogu.com.cn/problem/P1506
深搜代码如下
#include <bits/stdc++.h>
using namespace std ;
const int N = 1e3 + 10;
int n , m , k;
char a[N][N];
bool vis[N][N];
int op = 0;
int ans = 0;
int sx , sy , fx , fy;
int dx[4] = {-1 , 0 , 1 , 0};
int dy[4] = {0 , 1 , 0 , -1};
void dfs(int x , int y) {
vis[x][y] = 1;
for(int i = 0 ; i < 4 ; i++) {
int xx = x + dx[i];
int yy = y + dy[i];
if(xx < 1 || xx > n || yy < 1 || yy > m) continue;
if(vis[xx][yy] || a[xx][yy] == '*') continue ;
dfs(xx , yy);
}
}
int main () {
cin >> n >> m;
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= m ; j++) {
cin >> a[i][j];
}
}
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= m; j++) {
if(i == 1 || j == 1 ||i == n || j == m) {
if(a[i][j] == '0'&& !vis[i][j]) {
dfs(i , j);
}
}
}
}
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= m ; j++) {
if(!vis[i][j] && a[i][j] == '0') ans++;
}
}
cout << ans;
return 0 ;
}
这里空空如也




有帮助,赞一个