米哈游春招后端-2023.03.19-第一题-米哈游的RBG矩阵-简单

这篇具有很好参考价值的文章主要介绍了米哈游春招后端-2023.03.19-第一题-米哈游的RBG矩阵-简单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

米哈游的RBG矩阵

Problem Description

米小游拿到了一个矩阵,矩阵上有一格有一个颜色,为红色( R )。绿色( G )和蓝色( B )这三种颜色的一种。
然而米小游是蓝绿色盲,她无法分游蓝色和绿色,所以在米小游眼里看来,这个矩阵只有两种颜色,因为蓝色和绿色在她眼里是一种颜色。
米小游会把相同颜色的部分看成是一个连通块。请注意,这里的连通划是上下左右四连通的。
由于色盲的原因,米小游自己看到的连通块数量可能比真实的连通块数量少。 你可以帮米小游计算连通块少了多少吗?

input

第一行输入两个正整数 n 和 m,代表矩阵的行数和列数。接下来的 n 行,每行输入一个长度为m 的,仅包含 R 、G 、B
三种颜色的字符串,代表米小游拿到的矩阵。 1≤n,m≤1000

ouput

一个整数,代表米小游视角里比真实情况少的连通块数量。

Sample Input

2 6
RRGGBB
RGBGRR

Sample Output

3文章来源地址https://www.toymoban.com/news/detail-408515.html

题目类型、难度、来源

  • 类型:DFS、BFS、并查集
  • 难度:简单
  • 来源:米哈游春招后端-2023.03.19-第一题-米哈游的RBG矩阵

总体思路:

  • 此题就是求一个图的联通分量数量。可以用并查集也可以用DFS、BFS。方法很多,数据集也不打,我这里为了写代码方便,就用了DFS。

AC代码

#include <iostream>
using namespace std;
// flag=1: 米小游视角
int n, m;
bool same_color(char &c1, char &c2, bool flag){
    if (c1 == c2){
        return true;
    }else if (flag){
        return (c1 + c2 == 'B' + 'G');
    }
    return false;
}
void DFS(char **G, bool **visted,bool &flag, int i, int j){
    visted[i][j] = 1;
    if (i+1 < n){
        if (same_color(G[i+1][j], G[i][j], flag) && !visted[i+1][j]){ 
            DFS(G, visted, flag, i+1, j);
        } 
    }
    if (j+1 < m){
        if (same_color(G[i][j+1], G[i][j], flag) && !visted[i][j+1]){
            DFS(G, visted, flag, i, j+1);
        }
    }
    if (i-1 >= 0){
        if (same_color(G[i-1][j], G[i][j], flag) && !visted[i-1][j]){
            DFS(G, visted, flag, i-1, j);
        } 
    }
    if (j-1 >= 0){
        if (same_color(G[i][j-1], G[i][j], flag) && !visted[i][j-1]){
            DFS(G, visted, flag, i, j-1);
        } 
    }
}
int get_num(char **G, bool flag, int n, int m){
    bool **visted = new bool*[n];
    for (int i = 0; i < n; i++){
        visted[i] = new bool[m];
    }
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            visted[i][j] = false;
        }
    }
    int cnt = 0;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            if (visted[i][j])   continue;
            DFS(G, visted, flag, i, j);
            cnt++;
        }
    }
    return cnt;
}
int main(){
    cin >> n >> m;
    char **G = new char*[n];
    for (int i = 0; i < n; i++){
        G[i] = new char[m];
        for (int j = 0; j < m; j++){
            cin >> G[i][j];
        }
    }
    int cnt1 = get_num(G, 0, n, m);
    int cnt2 = get_num(G, 1, n, m);
    cout << cnt1-cnt2;
    return 0;
}
  • 更多大厂真题可以看:2023实习、秋招互联网大厂技术岗算法真题-刷题(持续更新)

到了这里,关于米哈游春招后端-2023.03.19-第一题-米哈游的RBG矩阵-简单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【每日一题Day245】面试题 16.19. 水域大小 | dfs

    你有一个用于表示一片土地的整数矩阵 land ,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。 dfs感染

    2024年02月10日
    浏览(34)
  • AWS认证SAA-C03每日一题

    本题库由云计算狂魔微信公众号分享。 【SAA-C03助理级解决方案架构师认证】 A company runs an application using Amazon ECS.The application creates resized versions of an original image and then makes Amazon S3 API calls to store the resized images in Amazon S3. How can a solutions architect ensure that the application has permission

    2024年02月11日
    浏览(31)
  • 【每日一题】Leetcode - 19. Remove Nth Node From End of List

    Leetcode - 19. Remove Nth Node From End of List Drawing on the method of finding midpoints in linked lists, use quick slow pointer Finding midpoints in linked lists nothing

    2024年02月12日
    浏览(40)
  • (数组与矩阵) 剑指 Offer 03. 数组中重复的数字 ——【Leetcode每日一题】

    难度:简单 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入 : [2, 3, 1, 0, 2, 5, 3] 输出 :2 或

    2024年02月16日
    浏览(29)
  • 力扣经典150题第一题:合并两个有序数组

    合并两个有序数组问题详解与解决方法 1. 介绍 在编程面试中,合并两个有序数组是一个经典的问题。它要求将两个有序数组合并为一个新的有序数组。本篇博客将深入讨论这个问题,并提供解决方法。 2. 问题描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两

    2024年04月23日
    浏览(32)
  • Windows Server 各版本搭建远程访问 / VPN 服务器实现 VPN 连接(03~19)

    开机后点击添加或删除角色 点击下一步 勾选自定义,点击下一步 点击 远程访问/VPN 服务器,点击下一步  点击下一步 点击下一步 勾选自定义,点击下一步  选择配置类型,点击下一步 点击完成  点击是 点击完成 点击左下角开始➡管理工具➡路由和远程访问,右键本地服

    2024年04月10日
    浏览(30)
  • 【每日一题 | 动态规划】访问完所有房间的第一天

    【动态规划】【数组】【2024-03-28】 1997. 访问完所有房间的第一天 定义状态 定义 f[i] 表示第一次到达房间 i 的日期编号。 根据题意,首次(第 1 次)访问房间 i 时,因为 1 是计数,所以下一次一定会访问房间 j = nextVisit[i] 。只有访问次数达到偶数才能访问右边的下一个房间

    2024年04月16日
    浏览(29)
  • web爬虫第五弹 - JS逆向入门(猿人学第一题)

    0- 前言 爬虫是一门需要实战的学问。 而对于初学者来说,要想学好反爬,js逆向则是敲门砖。今天给大家带来一个js逆向入门实例,接下来我们一步一步来感受下入门的逆向是什么样的。该案例选自猿人学练习题。猿人学第一题 1- 拿到需求 进入页面拿到需求我们先不要急着

    2024年02月14日
    浏览(24)
  • 【办公类-19-03】办公中的思考——Python批量制作word单元格照片和文字(小照片系列)

    全部材料路径(红框两个必备) 每位老师的序号和名言都不同   必须调整图片质量(制作小图)的意义            

    2024年02月09日
    浏览(28)
  • 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来​​

    题解地址 https://leetcode.cn/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/ 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以

    2024年02月13日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包