感觉主要部分的深搜没有问题,但就是差了几百个点
#include <iostream>
#include <string>
using namespace std;
int a[502][502] = {0};
int r;int c;int num;
int kr[] = {0,1,0,-1};
int kc[] = {1,0,-1,0};
void dfs(int x,int y){
a[x][y] = -1;
for (int i = 0; i < 4; i++){
x = x + kr[i];y = y + kc[i];
if (x>=0&&x<r&&y>=0&&y<c&&a[x][y]==0){dfs(x,y);}
x = x - kr[i];y = y - kc[i];
}
}
int main(){
cin >> r >> c;
for (int i = 0; i < r; i++){
string tmp;
cin >> tmp;
for (int j = 0; j < c; j++){
if (tmp[j] != '*'){a[i][j]=0;}
else{a[i][j]=1;}
}
}
for (int i = 0; i < r; i++){
dfs(i,0);
dfs(i,c);
}
for (int j = 1; j < c; j++){
dfs(0,j);
dfs(r,j);
}
for (int i = 0; i < r; i++){
for (int j = 0; j < c; j++){
if (a[i][j]==0){num++;}
}
}
cout << num;
return 0;
}