想不明白到底错在哪里
查看原帖
想不明白到底错在哪里
797281
EverNight_CN楼主2023/11/27 22:48

感觉主要部分的深搜没有问题,但就是差了几百个点

#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;
}

2023/11/27 22:48
加载中...