首页 > 其他分享 >【UVA 572】Oil Deposits 题解(深度优先搜索)

【UVA 572】Oil Deposits 题解(深度优先搜索)

时间:2023-09-17 14:02:03浏览次数:31  
标签:map Oil int 题解 Deposits 网格 ++ maxn &&

GeoSurvComp地质调查公司负责探测地下石油矿床。 GeoSurvComp一次处理一个大的矩形土地区域,并创建一个划分 将土地分割成许多方形地块。然后使用传感设备分别分析每个地块 确定图中是否含有油。 含有石油的地块称为口袋。如果两个口袋相邻,则它们是 相同的油沉积。油沉积物可能非常大,并且可能包含许多气穴。你的工作是 确定网格中包含多少不同的油沉积物。 输入 输入文件包含一个或多个网格。每个网格以一条包含m和n的线开始 网格中的行和列,由单个空间分隔。如果m=0,则表示输入结束; 否则1≤m≤100,1≤n≤100。下面是m行,每行n个字符(不计在内 行尾字符)。每个字符对应一个绘图,并且是“*”,表示 无油,或“@”,表示油袋。 输出 对于每个网格,输出不同石油沉积物的数量。两个不同的口袋是相同的一部分 如果它们水平、垂直或对角相邻,则会沉积油。油沉积物不会包含 超过100个口袋。

Sample Input 1 1 * 3 5 @@* @@@* 1 8 @@***@ 5 5 ****@ @@@ @**@ @@@@ @@**@ 0 0 Sample Output 0 1 2 2

思路

用一个二维数组储存图。对图进行遍历,若找到@,则将其替换为*,计数器加一,然后对该位置的八个方向进行搜索,把@替换为*。注意搜索时需要判断是否出界。

AC代码

#include <iostream>
using namespace std;
#define AUTHOR "HEX9CF"

const int maxn = 105;

int m, n;
char map[maxn][maxn];
int cnt;

void dfs(int x, int y)
{
    map[x][y] = '*';
    for (int i = x - 1; i <= x + 1; i++)
    {
        for (int j = y - 1; j <= y + 1; j++)
        {
            if ('@' == map[i][j] && i >= 0 && i < m && j >= 0 && j < n)
            {
                dfs(i, j);
            }
        }
    }
}

void print()
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << map[i][j];
        }
        cout << endl;
    }
}

int main()
{
    while (1)
    {
        cnt = 0;
        cin >> m >> n;
        if (!m && !n)
        {
            return 0;
        }
        cnt = 0;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cin >> map[i][j];
            }
        }
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if ('@' == map[i][j])
                {
                    cnt++;
                    dfs(i, j);
                }
            }
        }
        // print();
        cout << cnt << endl;
    }
    return 0;
}

标签:map,Oil,int,题解,Deposits,网格,++,maxn,&&
From: https://blog.51cto.com/HEX9CF/7501681

相关文章

  • CF70D Professor's task 题解 & 动态凸包板子
    CF70DProfessor'stask题解前言此篇题解用的是\(Andrew\),不想看这种做法的可以绕道。题意动态凸包板子题。维护动态凸包。两种操作,加一个点或查询一个点是否在凸包内。题解首先你得会静态二维凸包。维护二维凸包的方法挺多的,比如什么\(Andrew\)算法,\(Jarvis\)算法还......
  • 简单分治快排问题解析(c++实现)
    这几天刷了需要使用分治快排思想去解决的几道比较好的题目,所以写下这篇博客用于复习和以后的复盘。什么是分治快排思想首先我们要知道什么是分治快排思想,这个思想其实就是在模拟实现qsort算法的时候使用的一个方法,在模拟实现qsort的时候,我们知道第一步是需要使用一个随意选择(三数取......
  • [ABC320E] Somen Nagashi题解
    2023-09-16题目题目传送门翻译翻译难度&重要性(1~10):4题目来源AtCoder题目算法优先队列解题思路水题一道。需要两个优先队列:因为每一次是队首的人拿到面条,即队列中编号最小的拿面条,就用一个优先队列用来维护当前队列中的编号最小的人。由于每一次拿了面条后再......
  • [ABC320F] Fuel Round Trip 题解
    题意在坐标轴上给定\(N\)个点,坐标依次为\(X_1,X_2,\cdots,X_N\),你需要从原点前往\(X_N\)并折返,其中在第\(1\)个到第\(N-1\)个点上有加油站,其中第\(i\)个加油站可以花费\(P_i\)购买\(F_i\)升汽油,汽油持有上限为\(H\)升,每行驶一单位距离需要花费一升汽油。在......
  • 【题解】AtCoder-ABC320
    AtCoder-ABC320ALeylandNumber依题意计算。提交记录:Submission-AtCoderAtCoder-ABC320BLongestPalindrome直接\(O(n^2)\)枚举,\(O(n)\)判断。提交记录:Submission-AtCoderAtCoder-ABC320CSlotStrategy2(Easy)不妨将字符串复制三遍,枚举\([0,3m)\)判断。提交......
  • 【POJ 3275】Ranking the Cows 题解(传递闭包)
    农夫约翰的N头奶牛(1≤N≤1000)产奶率各不相同,FJ希望根据这些比率从最快的奶牛到最慢的奶牛订购奶牛。FJ已经比较了M(1≤M≤10000)对奶牛的产奶率。他想列出另外C对奶牛的列表,这样,如果他现在比较这些C对奶牛,他肯定能够推断出所有N头牛的正确顺序。请帮助他确定C的最小值,这样的列表是可......
  • 合并果子题解-C++ STL priority_queue容器的使用
    说明:本博文关于priority_queue容器的说明来源于www.cnblogs.com/fusiwei/p/11823053.html本人是刚刚接触算法竞赛的萌新,如果有大佬发现了错误,还望指出(真的有人会看本蒟蒻的博文吗)这是我的第一篇博文,更多是作为测试以后会将博客作为笔记记录学习的体会基本概念priority_queu......
  • lattice crosslink开发板mipi核心板csi测试dsi屏lif md6000 fpga 常见问题解答
    1.概述    CrossLink开发板,是用Lattice的芯片CrossLink家族系列的,LIF-MD6000-6JM80I。该芯片用于桥接视频接口功能,自带2路MIPI硬核的功能,4LANE MIPI的功能,支持高速率1.5Gbps。   其他普通IO支持1.2Gbps速率,支持5路MIPI通道功能。 芯片包含LVDS,SLVS200,SubL......
  • 华为应用市场上架 视频介绍上传 遇到的问题解决
    昨天在华为应用市场上架应用, 视频介绍上传时, 一直是视频加载中,百思不得其解. 虽然不是第一次上传视频了,怎么这次遇到这个问题.偶然发现在视频介绍上传时, 选择海报后,一定要下划,点击确认,才能完成上传!否则一直是视频加载中............
  • AnyCAD程序无法启动的问题解决方法
    在某些电脑上会出现基于AnyCAD开发的程序无法启动的问题,如:System-ArgumentEcception:Pleasecheckthedependendes解决方法安装最新的VS运行时库,如VS2022:微软官方下载地址:x64:vc_redist.x64.exeSystem.AccessViolationException:"Attemptedtoreadorwriteprotected......