华为OD机试 - 无向图染色(Java 2024 E卷 100分)

在这里插入图片描述

华为OD机试 2024E卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

给一个无向图Q 染色,可以填红黑两种颜色,必须保证相邻的两个节点不能同时为红色,输出有多少种不同的染色方案?

二、输入描述

第一行输入M(图中节点数) N(边数)

后续N行格式为:V1 V2表示一个V1到V2的边。

数据范围:1 <= M <= 15, 0 <= N <= M * 3, 不能保证所有节点都是连通的。

三、输出描述

输出一个数字表示Q染色方案的个数。

说明

0 < n <= 15
0 <= N <= M * 3
0 <= s, t < n

不保证图连通

保证没有重复边和自环

四、测试用例

测试用例1:

1、输入

4 4
1 2
2 4
3 4
1 3

2、输出

7

3、说明

4个节点,4条边,1号节点和2号节点相连,
2号节点和4号节点相连,3号节点和4号节点相连,
1号节点和3号节点相连,
若想必须保证相邻两个节点不能同时为红色,总共7种方案。

测试用例2:

1、输入

3 3
1 2
1 3
2 3

2、输出

4

3、说明

3个节点,3条边。所有满足条件的染色方案共有4种。

五、解题思路

  1. 邻接表的构建:使用邻接表表示无向图,每个节点存储其相邻节点的列表。
  2. 回溯算法:通过回溯遍历所有可能的染色方案。对于每个节点,有两种选择:染为黑色或红色。
  3. 染为黑色:无需检查相邻节点,直接递归处理下一个节点。
  4. 染为红色:需要检查所有相邻节点是否已经染为红色。如果没有相邻节点染红,则可以染红,并继续递归处理下一个节点。
  5. 计数:每当所有节点都被处理完毕且满足条件时,计数加一。

六、Java算法源码

public class OdTest {private static int M; // 节点数private static int N; // 边数private static List<Integer>[] adj; // 邻接表private static int count = 0; // 有效染色方案计数public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取节点数M和边数NM = scanner.nextInt();N = scanner.nextInt();// 初始化邻接表adj = new ArrayList[M];for (int i = 0; i < M; i++) {adj[i] = new ArrayList<>();}// 读取N条边,构建无向图for (int i = 0; i < N; i++) {int u = scanner.nextInt() - 1; // 节点编号从1开始,转换为0-basedint v = scanner.nextInt() - 1;adj[u].add(v);adj[v].add(u);}// 开始回溯,从第0个节点开始backtrack(0, new boolean[M]);// 输出有效染色方案的数量System.out.println(count);scanner.close(); // 关闭扫描器}/*** 回溯函数,用于遍历所有可能的染色方案** @param node 当前处理的节点编号* @param red  当前已染为红色的节点集合*/private static void backtrack(int node, boolean[] red) {// 如果所有节点都已处理,增加计数if (node == M) {count++;return;}// 尝试将当前节点染为黑色backtrack(node + 1, red);// 尝试将当前节点染为红色boolean canBeRed = true;for (int neighbor : adj[node]) {if (red[neighbor]) {canBeRed = false; // 相邻节点已染红,不能染红break;}}if (canBeRed) {red[node] = true; // 将当前节点染为红色backtrack(node + 1, red);red[node] = false; // 回溯,撤销染色}}
}

七、效果展示

1、输入

4 6
1 2
1 3
1 4
2 3
2 4
3 4

2、输出

5

3、说明

完全图K4,所有节点互相连接。有效染色方案为:

所有节点黑色

1红,其余黑
2红,其余黑
3红,其余黑
4红,其余黑

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 E卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

云智慧完成华为原生鸿蒙系统的适配, 透视宝 APM 为用户体验保驾护航

2024 年 10 月 22 日&#xff0c;首个国产移动操作系统 —— 华为原生鸿蒙操作系统 HarmonyOS NEXT 正式面世&#xff0c;成为继 iOS 和 Android 后的全球第三大移动操作系统。HarmonyOS NEXT&#xff0c;从系统内核、数据库根基&#xff0c;到编程语言创新、AI&#xff08;人工…

无人机之任务分配算法篇

无人机的任务分配算法是无人机系统中的重要组成部分&#xff0c;它决定了无人机如何高效、合理地执行各种任务。以下是一些常见的无人机任务分配算法&#xff1a; 一、合同网协议&#xff08;Contract Net Protocol, CNP&#xff09; 基本概念&#xff1a;CNP算法是一种分布式…

【WRF数据处理】基于GIS4WRF插件将geotiff数据转为tiff(geogrid,WPS所需数据)

【WRF数据处理】基于GIS4WRF插件将geotiff数据转为tiff&#xff08;geogrid&#xff0c;WPS所需数据&#xff09; 数据准备&#xff1a;以叶面积指数LAI为例QGis实操&#xff1a;基于GIS4WRF插件将geotiff数据转为tiff警告&#xff1a;GIS4WRF: Input layer had an unexpected …

【MySQL基础】高级查询

文章目录 一、聚合函数&#xff1a;COUNT、SUM、AVG、MIN、MAX1. 统计总数&#xff1a;COUNT2. 计算总和&#xff1a;SUM3. 计算平均值&#xff1a;AVG4. 找最小值&#xff1a;MIN5. 找最大值&#xff1a;MAX 综合使用聚合函数的例子小结 二、分组查询——GROUP BY 和 HAVING1.…

ElasticSearch备考 -- Index shrink

一、题目 索引task包括5个分片一个副本&#xff0c;对索引执行shrink压缩操作&#xff0c;压缩后索引为1主分片&#xff0c;索引名称为task-new 二、思考 在执行shrink前必须满足三个前置条件 The index must be read-only.A copy of every shard in the index must reside o…

名词(术语)了解--CSSOM (CSS Object Model)

名词&#xff08;术语&#xff09;了解–CSSOM (CSS Object Model) CSSOM 概述 CSSOM 是一个与 DOM (Document Object Model) 相对应的、用于 CSS 的 API 集合。 它提供了一种程序化的方式来读取和修改文档的样式信息。 CSSOM 的主要组成部分 样式规则树 document └── …

智能化超声波影像分析,优化医疗决策的开源AI解决方案

思通数科的医疗信息精准抽取系统是一款基于人工智能的开源软件&#xff0c;旨在自动化处理医疗数据&#xff0c;特别是从超声波影像到诊断报告的信息提取。该系统集成了图像识别、自然语言处理和知识图谱等先进技术&#xff0c;能够从医疗影像中提取关键数据&#xff0c;并将这…

Objective-C 音频爬虫:实时接收数据的 didReceiveData_ 方法

在互联网技术领域&#xff0c;数据的获取和处理是至关重要的。尤其是对于音频内容的获取&#xff0c;实时性和效率是衡量一个爬虫性能的重要指标。本文将深入探讨在Objective-C中实现音频爬虫时&#xff0c;如何高效地使用didReceiveData:方法来实时接收数据&#xff0c;并通过…

Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

如何在 Elasticsearch Ruby 客户端中使用 ES|QL Helper

作者&#xff1a;来自 Elastic Fernando Briano 了解如何使用 Elasticsearch Ruby 客户端编写 ES|QL 查询并处理其结果。 简介 Elasticsearch Ruby 客户端可用于编写 EQ|QL 查询&#xff0c;使处理从 esql.query 返回的数据更加容易。ES|QL 允许开发人员通过查询过滤、转换和分…

【elkb】ELKB安装token过期

问题 elastic启动时候生成的token 有效期只有30分钟。 30分钟后提示&#xff1a; Couldnt configure Elastic Generate a new enrollment token or configure manually. 相关版本信息 elasticsearch&#xff1a;8.8.1kibana&#xff1a;8.8.1logstash&#xff1a;8.8.1file…

交易所开发:开启数字金融新时代

当今数字化高速发展的时代&#xff0c;交易所作为金融市场的核心枢纽&#xff0c;发挥着至关重要的作用。而随着区块链技术的兴起&#xff0c;数字货币交易所的开发更是为金融领域带来了全新的变革与机遇。 一、数字货币交易所的重要性 数字货币交易所是连接数字货币世界与传统…

企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门

本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程&#xff0c;本课程旨在深入探讨大型语言模型&#xff08;LLM&#xff09;在服务器及IT网络运维中的应用&#xff0c;结合当前技术趋势与行业需求&#xff0c;帮助学员掌握LLM如何为运维工作赋能。通过系统…

网上商城设计小程序ssm+论文源码调试讲解

2相关技术 2.1微信小程序 小程序是一种新的开放能力&#xff0c;开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播&#xff0c;同时具有出色的使用体验。尤其拥抱微信生态圈&#xff0c;让微信小程序更加的如虎添翼&#xff0c;发展迅猛。 2.2 MYSQL数据…

大贤3D家谱——让修家谱不再困难

修家谱作为一种文化传统&#xff0c;承载着家族的历史和文化记忆&#xff0c;但近年来确实面临一些困难&#xff0c;导致很多人不愿意修家谱。以下是一些主要原因&#xff1a; 1、信息获取难度&#xff1a; 家谱的修订需要大量的历史资料和族谱记录。许多家庭的老谱由于时间久…

Node + HTML搭建自己的ChatGPT [基础版]

文章目录 明明外面的ChatGPT产品那么多了&#xff0c;为什么要在本地搭建自己的ChatGPT呢&#xff1f;整体架构流程1. 获取APIKey1.1 常见的AI模型1.2 为什么选DeepSeek1.3 怎么获取DeepSeek的APIKey1.3.1 注册并登录DeepSeek开放平台1.3.2 选择API keys1.3.3 创建API key1.3.4…

【Linux学习】(8)第一个Linux编程进度条程序|git三板斧

前言 第一个Linux编程——进度条git的简单使用 一、第一个Linux编程——进度条 在写进度条之前我们需要两个基础知识&#xff1a; 回车换行缓冲区 1. 回车换行 首先我们需要知道回车换行它是两个概念&#xff0c;回车是回车&#xff0c;换行是换行换行&#xff1a;光标从上往下…

DEVOPS: 认证与调度

概述 不知道大家有没有意识到一个现实&#xff0c;就是大部分时候&#xff0c;我们已经不像以前一样通过命令行&#xff0c;或者可视窗口来使用一个系统了现在我们上微博、或者网购&#xff0c;操作的其实不是眼前这台设备&#xff0c;而是一个又一个集群 通常&#xff0c;这样…

MUX VLAN 实验配置

MUX VLAN&#xff08;Multiplex VLAN&#xff09;是一种高级的VLAN技术&#xff0c;通过在交换机上实现二层流量隔离和灵活的网络资源控制&#xff0c;提供了一种更为细致的网络管理方式 MUX VLAN通过定义主VLAN&#xff08;Principal VLAN&#xff09;和多个子VLAN&#xff0…

海外云手机怎样助力亚马逊店铺运营?

随着全球化的发展&#xff0c;越来越多的企业开始重视海外市场的拓展&#xff0c;尤其是出海企业和B2B外贸企业。亚马逊作为全球最大的电商平台之一&#xff0c;成为了许多企业争夺国际市场的重点战场。本文将深入分析海外云手机在优化亚马逊店铺引流中的作用和优势&#xff0c…