华为OD机试真题 Java 实现【红黑图】【2023Q1 200分】,附详细解题思路

news2024/11/19 1:39:21

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、补充说明
    • 五、解题思路
    • 六、Java算法源码
    • 七、效果展示
      • 1、输入
      • 2、输出

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

  • 专栏福利:限时订阅49.9,订阅后可加入华为OD刷题群,获得哪吒优先答疑机会(华为OD刷题指导,远程代码调试),群里大佬众多可以抱团取暖,群友刷题经验分享,考试经验分享。

在这里插入图片描述

一、题目描述

众所周知红黑树是一种平衡树,它最突出的特性就是不能有两个相邻的红色节点。

那我们定义一个红黑图,也就是一张无向图中,每个节点可能有红黑两种颜色,但我们必须保证没有两个相邻的红色节点。
现在给出一张未染色的图,只能染红黑两色,问总共有多少种染色方案使得它成为一个红黑图。

二、输入描述

第一行两个数字n m,表示图中有n个节点和m条边。

接下来共计m行,每行两个数字s t,表示一条连接节点s和节点t的边,节点编号为[0,n]。

三、输出描述

一个数字表示总的染色方案数。

四、补充说明

0<n<15
0<=m <=n * 30<= s, t < n不保证图连通
保证没有重边和自环

五、解题思路

  1. 读取输入的节点数n和边数m。
  2. 创建一个空的列表list,用于存储边的信息。
  3. 循环m次,读取每条边的起始节点和结束节点,将其存储为一个长度为2的数组,然后添加到列表list中。
  4. 计算红黑图的可能性总数,假设有n个节点,那么总的可能性数为2的n次方。
  5. 初始化变量num为总的可能性数sum。
  6. 遍历从0到sum的所有可能性:
    • 对于每个可能性,遍历列表list中的每条边。
    • 使用位运算判断起始节点和结束节点是否都被染色(对应位为1)。
    • 如果起始节点和结束节点都被染色,表示出现了两个相邻的红色节点,将num减1,并结束当前遍历。
  7. 输出num作为结果。

六、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // 节点数n
    int n = sc.nextInt();
    // 边数m
    int m = sc.nextInt();
    // 存储边的信息
    List<int[]> list = new LinkedList<>();
    for (int i = 0; i < m; i++) {
        // 起始节点
        int start = sc.nextInt();
        // 结束节点
        int end = sc.nextInt();
        int[] edge = {start, end};
        list.add(edge);
    }

    // 假设有n个节点,那么总的可能性数为2的n次方
    int sum = (int) Math.pow(2, n);
    // 初始化变量num为总的可能性数sum
    int num = sum;
    // 遍历从0到sum的所有可能性
    for (int i = 0; i < sum; i++) {
        // 对于每个可能性,遍历列表list中的每条边
        for (int[] edge : list) {
            // 使用位运算判断起始节点和结束节点是否都被染色
            int start = 1 << edge[0];
            int end = 1 << edge[1];
            // 如果起始节点和结束节点都被染色,表示出现了两个相邻的红色节点
            if ((start & i) != 0 && (end & i) != 0) {
                // 将num减1
                num--;
                // 结束当前遍历
                break;
            }
        }
    }
    System.out.println(num);
}

七、效果展示

1、输入

3 3
0 1
0 2
1 2

2、输出

4

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度留痕是什么方法排名的

百度留痕是什么方法排名的,黑帽seo教学&#xff1a;谷歌外推搜索留痕关键词秒收录排名软件技术培训 #外推留痕 #黑帽seo #黑帽seo培训 今天给大家看一个百度留痕的一个链接&#xff0c;东西也很简单&#xff0c;其实就是前面的一个地址加后面的一个你的联系方式&#xff0c;你…

三菱plc以太网连接电脑步骤

大家好&#xff0c;今天要和大家分享一个在生产管理系统中的常见问题&#xff1a;如何更方便地上位机访问PLC。我们知道&#xff0c;三菱FX系列PLC好多型号常常不带网口&#xff0c;这给上位机访问带来了不小的麻烦。但是&#xff0c;通过一款名为捷米特JM-ETH-FX的转换器&…

全程干货不愧是Alibaba总结的《Java面试权威指南泰山版》。

随着Java这个行业的兴起&#xff0c;薪资成功的吸引了一大批人&#xff0c;不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java&#xff0c;然后就导致现在培训结构大量的流水线化&#xff0c;带着你走完一…

前端性能优化---样式计算

理论 样式计算 第一步&#xff0c;匹配一系列的样式选择器 第二步&#xff0c;取出所有匹配后的样式规则&#xff0c;构造RenderStyle 步骤 我们的解决思路是 减少样式计算的相互作用&#xff0c;即样式重新计算 什么是 Recalculate Style&#xff1f;在浏览器每一帧的渲染流…

详解c++---c++11(下)

目录标题 default关键字delete关键字lambda表达式为什么会有lambda表达式lambda的用法多线程和lambdalambda的底层 可变参数模板emplace包装器为什么会有包装器包装器的使用 bind default关键字 C11可以让你更好的控制要使用的默认函数。假设你要使用某个默认的函数&#xff0…

【搜索引擎】提高Apache Solr 性能

这是一个关于我们如何设法克服搜索和相关性堆栈的稳定性和性能问题的简短故事。 语境 在过去的 10 个月里&#xff0c;我很高兴与个性化和相关性团队合作。我们负责根据排名和机器学习向用户提供“个性化和相关的内容”。我们通过一组提供三个公共端点的微服务来做到这一点&…

【docker】它们之间如何通信和阻止,以及容器的基本概念

此篇文章主要是简单讲解&#xff0c;docker之间的通信方式以及和如何阻止docker之间的通信 目录 1、如何docker通信1.1、网络连接1.2、链接&#xff08;Linking&#xff09;1.3、共享数据卷&#xff08;Shared Volumes&#xff09;1.4、服务发现和负载均衡 2、阻止docker通信2.…

微信公众号搭建内网穿透骨灰级教程

微信公众号是我们日常使用的小工具&#xff0c;很多企业都会去申请微信公众号&#xff0c;但为了及时获取推送消息&#xff0c;需要开发者自己去调用微信公共号接口进行功能扩展和对接&#xff0c; 接下来演示如何使用神卓互联内网穿透服务来生成公网访问地址&#xff0c;以便…

【运维工程师学习五】数据库之MariaDB

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读&#xff1a; 9、MariaDB的配置选项10、MariaDB客户端连接1、在…

MWeb Pro for Mac(苹果电脑最好用的Markdown编辑器)安装教程

MWeb Pro是一款专业的Mac平台上的Markdown编辑器&#xff0c;可以帮助用户更加高效地书写和排版文本内容&#xff0c;支持多种文本格式的导入和导出&#xff0c;如HTML、RTF、PDF等&#xff0c;还支持实时预览和代码高亮等功能&#xff0c;为用户提供了非常优秀的Markdown编辑体…

02LINGO基本操作

某公司新购置了某种设备 6 台&#xff0c;欲分配给下属的4 个企业&#xff0c;已知各企业获得这种设备后年创利润如表 1.1 所示&#xff0c;单位为千万元。问应如何分配这些设备能使年创总利润最大&#xff0c;最大利润是多少? 甲乙丙丁1423426455376764788657986671086 甲公…

【Java进阶之路】LinkedList源码分析

概述 LinkedList也是我们经常使用的集合&#xff0c;本文就LinkedList的几个主要方法展开介绍&#xff0c;并结合几个图片来介绍几个重要操作。 基础属性 transient int size 0; //节点数量/*** Pointer to first node.* Invariant: (first null && last null) |…

windows上安装Vmware及Linux系统

Linux系统的安装 一、windows上安装Vmware 第一步&#xff1a;复制VMware软件包到Windows系统中 第二步&#xff1a;双击VMware安装包&#xff0c;进行软件的安装 第三步&#xff1a;勾选软件的许可协议 第四步&#xff1a;设置VMware安装路径以及勾选增强型的键盘程序 第五步…

Three.js环境光,平行光,点光源,聚光灯的创建和灯光辅助线的使用

Three.js中的灯光API使用 1.环境光&#xff08;AmbientLight&#xff09;2.平行光&#xff08;directionalLight&#xff09;3.PointLight(点光源) 4.聚光灯&#xff08;SpotLight&#xff09;5.材质平面&#xff08;PlaneGeometry&#xff09;用于接收&#xff08;平行光和聚…

【边缘计算】【第一章 什么是边缘计算】

边缘计算 序第一章 什么是边缘计算概念章鱼说应用场景数据单位转换边缘计算的前世今生CDN&#xff08;Content Delivery Network&#xff09;内容分发网络微云&#xff08;Cloudlet&#xff09;雾计算——雾是接近地面的云MEC边缘计算大事记 边缘计算核心技术概述1 网络技术2 隔…

explain 是干嘛的

explain 是干嘛的 1.explain的作用 在MySQL中&#xff0c;EXPLAIN是一个用于查询优化的关键字。它可以用于分析查询语句的执行计划&#xff0c;帮助开发人员和数据库管理员理解查询的执行方式、查询涉及的表和索引、连接类型、查询优化器的决策等信息。 通过使用EXPLAIN关键…

智慧团建登录或忘记密码刷不出验证码

问题如下&#xff1a; 忘记密码和登录时没有验证码 原因&#xff1a;智慧团建的服务器端只放行不带“www.”的域名&#xff0c;一般zf或者其他jg系统都会限制万维网的进入 解决办法&#xff1a; 删掉“www.”&#xff0c;然后重新回车访问或者直接点我下边的链接&#xff1a;…

PyTorch翻译官网教程6-AUTOMATIC DIFFERENTIATION WITH TORCH.AUTOGRAD

官网链接 Automatic Differentiation with torch.autograd — PyTorch Tutorials 2.0.1cu117 documentation 使用TORCH.AUTOGRAD 自动微分 当训练神经网络时&#xff0c;最常用的算法是方向传播算法。在该算法中&#xff0c;根据损失函数与给定参数的梯度来调整模型参数&…

机器学习---定义、用途、算法的分类、假设空间与归纳偏好、奥卡姆剃刀原则

1. 机器学习的定义 基于历史经验的&#xff0c;描述和预测的理论、方法和算法。 从历史数据中&#xff0c;发现某些模式或规律&#xff08;描述&#xff09;&#xff0c;利用发现的模式和规律进行预测。 2. 机器学习能做什么 机器学习已经有了十分广泛的应用&#xff0c;例…

pdf文件大小如何压缩?pdf文件怎么压缩得更小?

日常生活和工作中&#xff0c;经常用到图片&#xff0c;但是有时候需要将图片压缩指定大小来符合各种规定&#xff0c;比如图片压缩到200kb&#xff0c;那么有没有简单方便的图片压缩&#xff08; https://www.yasuotu.com/imagesize&#xff09;的方法呢&#xff1f;下面就拿压…