首页 > 火锅问题
头像
TMAION
发布于 2022-12-04 11:14 陕西
+ 关注

火锅问题

  • 入职后,导师会请你吃饭,你选择了火锅。
  • 火锅里会在不同时间下很多菜。
  • 不同食材要煮不同的时间,才能变得刚好合适。你希望吃到最多的刚好合适的菜,但你的手速不够快,
  • 用m代表手速,每次下手捞菜后至少要过m秒才能在捞(每次只能捞一个)。
  • 那么用最合理的策略,最多能吃到多少刚好合适的菜?
  • 输入描述:
  • 第一行两个整数n,m,其中n代表往锅里下的菜的个数,m代表手速。
  • 接下来有n行,每行有两个数x,y代表第x秒下的菜过y秒才能变得刚好合适。
  • (1 < n, m < 1000)
  • (1 < x, y < 1000)
  • 输出描述:
  • 输出一个整数代表用最合理的策略,最多能吃到刚好合适的菜的数量
import java.util.Arrays;
public class Question42 {
    public static void main(String[] args) {
        int[][] arr = new int[][]{{1, 2}, {2, 1}};
        answer(arr, 1);
    }
    /**
     * 分析:准备好时,如果当前的菜已经熟了,则等待下一个,如果刚好熟了或者还没熟,则等待现在的菜
     * @param arr 所有的菜煮熟的时间
     * @param m 手速
     */
    public static void answer(int[][] arr, int m){
        //定义一个数组,
        int[] timeAndReady = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            timeAndReady[i] = arr[i][0] + arr[i][1];
        }
        Arrays.sort(timeAndReady);
        int count = 0;
        int timeCount = 0;
        for (int i = 0; i < arr.length; i++) {
            if (m <= timeAndReady[i] - timeCount){
                count++;
                timeCount = timeAndReady[i];
            }
        }
        System.out.println(count);
    }
}

全部评论

(10) 回帖
加载中...
话题 回帖