news 2026/9/23 12:17:44

【数字涂色 100分(python、java、c++、js、c)】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【数字涂色 100分(python、java、c++、js、c)】

【数字涂色 100分(python、java、c++、js、c)】

题目

疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。黑板上已经写上了N个正整数,同学们需要给这每个数分别上一种颜色。为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。现在请你帮帮小朋友们,算算最少需要多少种颜色才能给这N个数进行上色

输入描述

  • 第一行有一个正整数N,其中。

第二行有N个int型数(保证输入数据在[1,100]范围中),表示黑板上各个正整数的值

输出描述

  • 输出只有一个整数,为最少需要的颜色种数

用例

用例一:
输入:
3 2 4 6
输出:
1
用例二:
输入:

4

2 3 4 9

输出:
2

python解法

  • 解题思路:

  • 本程序的目标是计算数组可以被分成的最少颜色组数,其中:

任何一个颜色组中的所有数字,都不能是另一个数字的倍数。需要最少的颜色数,即尽可能少的组数。解题步骤读取输入

n:整数,表示数组元素个数。arr:包含 n 个整数的列表。递归划分颜色组 find_colors(nums)

排序数组:先对 nums 进行升序排序,确保最小数 base 先被选中。选取最小数 base 作为第一个颜色组的基础:将 base 作为当前组的代表。过滤掉 nums 中所有 base 的倍数,得到 filtered。递归调用 find_colors(filtered) 计算剩余数组的最小颜色组数。最终返回 1 + find_colors(filtered),其中 1 代表当前颜色组,find_colors(filtered) 递归计算剩余部分的颜色组数。

# 读取输入 n = int(input()) # 读取数组大小 arr = list(map(int, input().split())) # 读取数组元素 # 计算最少颜色组数的函数 def find_colors(nums): if not nums: # 递归终止条件:如果数组为空,返回0 return 0 nums.sort() # 排序数组,确保最小的数优先处理 base = nums[0] # 选取最小的数作为当前颜色组的基准 # 过滤掉所有是 base 倍数的数,剩余的数进入下一个递归 filtered = [num for num in nums if num % base != 0] # 1 (当前组) + 递归计算剩余数的颜色组数 return 1 + find_colors(filtered) # 输出最少颜色组数 print(find_colors(arr))

java解法

  • 解题思路

  • 本程序的目标是计算数组可以被分成的最少颜色组数,其中:

任何一个颜色组中的所有数字,都不能是另一个数字的倍数。需要最少的颜色数,即尽可能少的组数。解题步骤读取输入

读取整数 n,表示数组的元素个数。读取 n 个整数,并存入 numbers 数组。计算最少颜色组数 calculateMinColors(n, numbers)

排序 numbers:先对数组进行升序排序,确保较小的数先被考虑。创建布尔数组 used[]:used[i] == true 表示 numbers[i] 已经被归类到某个颜色组,不需要再考虑。遍历 numbers 并标记倍数:如果 numbers[i] 没有被使用,增加颜色组 colorCount。遍历 numbers[j](j > i),如果 numbers[j] 是 numbers[i] 的倍数,则将其标记为已使用 used[j] = true。返回 colorCount 作为最少颜色组数

统计出最小的颜色组数,并返回

import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 读取数组大小 int n = Integer.parseInt(scanner.nextLine()); // 读取数组元素并转换为整数数组 int[] numbers = Arrays.stream(scanner.nextLine().split(" ")) .mapToInt(Integer::parseInt) .toArray(); // 计算最少颜色组数并输出 System.out.println(calculateMinColors(n, numbers)); } public static int calculateMinColors(int n, int[] numbers) { Arrays.sort(numbers); // 对数组进行排序,确保较小的数先处理 int colorCount = 0; // 记录最少颜色组数 boolean[] used = new boolean[n]; // 标记数组,记录哪些数字已归类 // 遍历所有数字,确定颜色组 for (int i = 0; i < n; i++) { if (used[i]) continue; // 如果当前数字已归类,则跳过 colorCount++; // 发现一个新的颜色组 // 遍历剩余的数字,标记所有当前数字的倍数 for (int j = i + 1; j < n; j++) { if (!used[j] && numbers[j] % numbers[i] == 0) { used[j] = true; // 标记该数字已归类 } } } return colorCount; // 返回最少颜色组数 } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 9:37:22

【光子 AI 】应用 LangGraph 的核心模型和算法原理,完整实现一个极简版的 Agent 开发框架源代码,并给出具体的应用测试实际项目案例

应用 LangGraph 的核心模型和算法原理,完整实现一个极简版的 Agent 开发框架源代码,并给出具体的应用测试实际项目案例 文章目录 应用 LangGraph 的核心模型和算法原理,完整实现一个极简版的 Agent 开发框架源代码,并给出具体的应用测试实际项目案例 1) 核心模型与算法原理…

作者头像 李华
网站建设 2026/9/21 18:51:33

31、Linux网络服务与协议配置详解

Linux网络服务与协议配置详解 在当今的网络环境中,Linux系统凭借其强大的网络功能和高度的可定制性,在企业和数据中心中得到了广泛应用。本文将深入探讨Linux系统中NFS(网络文件系统)服务以及IPX和NCP文件系统的相关配置和使用。 NFS挂载选项详解 NFS是一种在网络中实现…

作者头像 李华
网站建设 2026/9/23 4:45:21

34、UUCP 配置与使用全解析

UUCP 配置与使用全解析 1. UUCP 连接与传输流程 UUCP(Unix-to-Unix Copy Program)在进行文件传输时,首先会进行握手阶段。在这个阶段,两个站点会维护成功连接的计数,并进行比较。若计数不匹配,握手就会失败,这一机制能有效防范冒名顶替者。 之后,两个 uucico 进程会…

作者头像 李华
网站建设 2026/9/23 9:04:41

45、C News系统配置与管理指南

C News系统配置与管理指南 在当今的信息时代,新闻组系统是信息传播和交流的重要平台之一。C News作为一款经典的新闻组服务器软件,其配置和管理对于确保新闻组的正常运行和信息的有效传播至关重要。本文将详细介绍C News系统的配置和管理要点,包括初始设置、关键文件的配置…

作者头像 李华
网站建设 2026/9/22 13:54:24

现代Python包管理工具效能对比:uv与pip深度评测

Python包管理在AI项目开发中扮演着至关重要的角色。随着ComfyUI-Manager这类大型AI项目的复杂度不断提升&#xff0c;传统的pip包管理方式已难以满足高效开发的需求。本文基于ComfyUI-Manager v3.38.3版本&#xff0c;深入剖析新一代包管理器uv与传统pip在实际项目中的性能表现…

作者头像 李华
网站建设 2026/9/23 8:52:09

Bark语音生成模型:从零到精通的完整实战指南

Bark语音生成模型&#xff1a;从零到精通的完整实战指南 【免费下载链接】bark 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/bark 在AI技术飞速发展的今天&#xff0c;文本到语音转换技术已经成为众多应用场景的核心需求。无论是为视障人士提供辅助工具&a…

作者头像 李华