文章

74

粉丝

0

获赞

94

访问

8.2k

头像
石油储藏 (DFS解法,BFS解法)题解:
P1564 中国科学院大学2021年机试题
发布于2025年8月21日 20:18
阅读数 46

1.DFS解法 

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

const int maxn = 100 + 5;
char mpt[maxn][maxn];
int vis[maxn][maxn];
int dirx[9] = {0, 0, 0, 1, -1, 1, -1, 1, -1};
int diry[9] = {0, 1, -1, 0, 0, 1, -1, -1, 1};
int m, n;

void dfs(int x, int y){
    vis[x][y] = 1;
    for(int i = 1; i <= 8; i ++){
        int dx = x + dirx[i];
        int dy = y + diry[i];

        if(dx > 0 && dy > 0 && dx <= m && dy <= n && vis[dx][dy] == 0){
            if(mpt[dx][dy] == '@') dfs(dx, dy);
        }
    }
}

int main(){

    while(cin >> m >> n && m != 0){

        memset(vis, 0, sizeof(vis));

        for(int i = 1; i <= m; i ++){
            scanf("%s", mpt[i] + 1);
        }

        int ans = 0;
        for(int i = 1; i <= m; i ++){
            for(int j = 1; j <= n; j ++){
                if(vis[i][j] == 0 && mpt[i][j] == '@'){
                    ans ++...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发