Java 编程实现彩虹糖最大高兴天数计算
Java 编程实现彩虹糖最大高兴天数计算
假设小美有 6 颗彩虹糖,颜色分别是 [1, 1, 4, 5, 1, 4]。
小美第一天吃颜色为 1 和 4 的彩虹糖,小美会很高兴;
小美第二天吃颜色为 4 和 1 的彩虹糖,小美不会很高兴;
小美第三天吃颜色为 1 和 5 的彩虹糖,小美会很高兴;此时小美共有 2 天很高兴。
小美想知道,她最多会有几天很高兴。
彩虹糖数量为用户自主输入内容:
import java.util.Arrays;
import java.util.Scanner;
public class RainbowCandy {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println('请输入彩虹糖的数量:');
int n = scanner.nextInt();
int[] colors = new int[n];
System.out.println('请输入彩虹糖的颜色:');
for (int i = 0; i < n; i++) {
colors[i] = scanner.nextInt();
}
scanner.close();
int maxHappyDays = findMaxHappyDays(colors);
System.out.println('小美最多会有' + maxHappyDays + '天很高兴。');
}
private static int findMaxHappyDays(int[] colors) {
Arrays.sort(colors); // 将彩虹糖颜色按照升序排序
int maxHappyDays = 0;
int currentHappyDays = 0;
int prevColor = -1;
for (int color : colors) {
if (color != prevColor) { // 如果当前颜色与前一个颜色不同
maxHappyDays = Math.max(maxHappyDays, currentHappyDays); // 更新最大高兴天数
currentHappyDays = 1; // 重置当前高兴天数为1
} else {
currentHappyDays++; // 当前颜色与前一个颜色相同,当前高兴天数加1
}
prevColor = color; // 更新前一个颜色为当前颜色
}
maxHappyDays = Math.max(maxHappyDays, currentHappyDays); // 最后一个颜色的高兴天数可能是最大的
return maxHappyDays;
}
}
代码解释:
- 输入: 程序首先使用
Scanner类获取用户输入的彩虹糖数量和颜色。 - 排序: 使用
Arrays.sort()方法将颜色数组按照升序排序,方便后续判断连续相同颜色的糖果。 - 遍历计算: 程序使用循环遍历排序后的颜色数组,并使用
prevColor变量记录前一个颜色。 - 判断高兴天数: 如果当前颜色与前一个颜色相同,则当前高兴天数加 1;如果不同,则更新最大高兴天数,并将当前高兴天数重置为 1。
- 返回结果: 最后,程序返回最大高兴天数。
示例:
输入:
请输入彩虹糖的数量:6
请输入彩虹糖的颜色:1 1 4 5 1 4
输出:
小美最多会有 2 天很高兴。
总结:
本程序通过排序和遍历的方式,有效地计算出了小美最多可以有几天吃糖感到高兴,代码简洁易懂,可读性强。
原文地址: https://www.cveoy.top/t/topic/qCdV 著作权归作者所有。请勿转载和采集!