购买水果最便宜的方案

购买水果最便宜的方案

前言

近期再刷算法题,所以会发布一些个人关于算法题的解题思路,欢迎大家指教。

一、题目描述

有m个水果超市在1-n个小时的不同时间段提供不同价格的打折水果,如果某餐厅每个小时都要新采购一种水果给餐厅使用的话, 请选出n个小时内,采购水果的最便宜的花费总和。 (假设m个超市打折时间段可以覆盖n小时)。

二、输入描述

N — 总小时数n
m — 水果超市个数m
X[0]x[1]x[2]—第2-m + 1行:每行长度为3的数组,代表各超市在x[0]-x[1]小时(包含[x1])提供价格为x2的水果。
范围提示: 1 <= n < 2^10 (1024)。

三、输出描述

采购水果的最便宜的花费总和。
1、输入
4
6
2 3 10
2 4 20
1 3 15
1 4 25
3 4 8
1 4 16
2、输出
41
3、说明
第1小时选15元的水果,第2小时10元水果,第3选8元水果,第4 小时选8元水果,共15+10+8+8=41。

四、java代码

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        /**
         * 1.保存所有的超市的打折水果
         * 2.通过餐厅所需要的时间段,然后遍历,从打折水果集合中进行判断,获取当前时间段对应最小的价格
         * 3.在循环中找到最小的价格之后直接进行求和
         */
        int N = Integer.parseInt(scanner.nextLine());
        int m = Integer.parseInt(scanner.nextLine());
        List<Integer[]> list = new ArrayList<>();
        for (int i = 0; i < m; i++) {
            Integer[] array = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
            //保存每个水果店的提供的时间段内的价格区间
            list.add(array);
        }
        //初始化总价格
        int sum = 0;
        for (int i = 1; i <= N; i++) {
            //初始化该时间点的最小价格
            int min = 0;
            for (Integer[] arr : list){
                Integer key = arr[2];//获取价格
                //如果当前时间在区间内,则获取该区间价格进行比较
                if(i>=arr[0] && i<= arr[1]){
                    if(min == 0 || min > key){
                        min = key;
                    }
                }
            }
            //对每个时间点的最小价格进行求和
            System.out.println("当前时间点:"+i +" 最小价格为:"+min);
            sum += min;
        }
        System.out.println("每个时间段最小价格总和: "+sum);
    }

五、测试用例

输入1:
4
6
2 3 10
2 4 20
1 3 15
1 4 25
3 4 8
1 4 16
输出:
在这里插入图片描述
输入2:
4
3
1 4 15
2 4 15
1 2 8
输出:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值