文章

166

粉丝

68

获赞

829

访问

51.4k

头像
石油储藏 题解:挖掘解决法
P1564 中国科学院大学2021年机试题
发布于2025年2月2日 14:02
阅读数 361

#include <bits/stdc++.h>
using namespace std;

//挖掘方向
vector<vector<int>> direction {{-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};


//找到一个就挖完所有,然后搜剩下的
void dfs(vector<vector<char>>& a, int i, int j) {
    if (i < 0 || i >= a.size() || j < 0 || j >= a[0].size() || a[i][j] != '@') return;
    a[i][j] = '*';
    for (int k = 0; k < 8; k++) {
        int x = i + direction[k][0];
        int y = j + direction[k][1];
        dfs(a, x, y);
    }
}

int main(){
    int m,n;
    while(cin>>m>>n){
        if(m==0&&n==0)break;
        vector<vector<char>>a(m,vector<char>(n));
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++)cin>>a[i][j];
        }
        int ans=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(a[i][j]=='@'){
                    dfs(a,i,j);
                    ans++;...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发