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;
    }
}

代码解释:

  1. 输入: 程序首先使用 Scanner 类获取用户输入的彩虹糖数量和颜色。
  2. 排序: 使用 Arrays.sort() 方法将颜色数组按照升序排序,方便后续判断连续相同颜色的糖果。
  3. 遍历计算: 程序使用循环遍历排序后的颜色数组,并使用 prevColor 变量记录前一个颜色。
  4. 判断高兴天数: 如果当前颜色与前一个颜色相同,则当前高兴天数加 1;如果不同,则更新最大高兴天数,并将当前高兴天数重置为 1。
  5. 返回结果: 最后,程序返回最大高兴天数。

示例:

输入:

请输入彩虹糖的数量:6
请输入彩虹糖的颜色:1 1 4 5 1 4

输出:

小美最多会有 2 天很高兴。

总结:

本程序通过排序和遍历的方式,有效地计算出了小美最多可以有几天吃糖感到高兴,代码简洁易懂,可读性强。

Java 编程实现彩虹糖最大高兴天数计算

原文地址: https://www.cveoy.top/t/topic/qCdV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录