Java编程实现彩虹糖问题:计算小美最多能开心多少天

问题描述:

例如,小美有6颗彩虹糖,颜色分别是'1,1,4,5,1,4'。 小美第一天吃颜色为1和4的彩虹糖,小美会很高兴; 小美第二天吃颜色为4和1的彩虹糖,小美不会很高兴; 小美第三天吃颜色为1和5的彩虹糖,小美会很高兴;此时小美共有2天很高兴。 小美想知道,她最多会有几天很高兴。

输入: 天数(用户自主输入)

输出: 小美最多会有多少天很高兴。

代码实现:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入天数:");
        int days = scanner.nextInt();
        
        System.out.print("请输入彩虹糖的数量:");
        int n = scanner.nextInt();
        int[] candies = new int[n];
        System.out.print("请输入彩虹糖的颜色:");
        for (int i = 0; i < n; i++) {
            candies[i] = scanner.nextInt();
        }
        
        int maxHappyDays = getMaxHappyDays(days, candies);
        System.out.println("小美最多会有" + maxHappyDays + "天很高兴。");
    }
    
    public static int getMaxHappyDays(int days, int[] candies) {
        Set<Integer> happyColors = new HashSet<>();
        int maxHappyDays = 0;
        
        for (int i = 0; i < days; i++) {
            happyColors.clear();
            int happyDays = 0;
            
            for (int j = i; j < candies.length; j += days) {
                if (happyColors.contains(candies[j])) {
                    happyDays--;
                } else {
                    happyColors.add(candies[j]);
                    happyDays++;
                }
            }
            
            maxHappyDays = Math.max(maxHappyDays, happyDays);
        }
        
        return maxHappyDays;
    }
}

代码解析:

  1. 获取用户输入: 使用Scanner类获取用户输入的天数、彩虹糖数量和颜色信息。
  2. 计算最大开心天数: 调用getMaxHappyDays方法计算小美最多能开心多少天。
  3. getMaxHappyDays方法:
    • 使用一个HashSet来记录小美每天吃过的彩虹糖的颜色。
    • 循环遍历每一天,计算小美每一天的高兴天数。
    • 每次遍历时,清除HashSet,然后根据小美当天吃的彩虹糖颜色来判断是否开心,开心则增加高兴天数,否则减少高兴天数。
    • 循环结束后,返回最大高兴天数。

代码示例:

请输入天数:3
请输入彩虹糖的数量:6
请输入彩虹糖的颜色:1 1 4 5 1 4
小美最多会有2天很高兴。

希望这段代码和解释对你有帮助!

Java编程实现彩虹糖问题:计算小美最多能开心多少天

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

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