华为机试4.27:购买水果最便宜的方案
生活随笔
收集整理的這篇文章主要介紹了
华为机试4.27:购买水果最便宜的方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
有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輸出
41解釋
第1小時選15元的水果,第2小時10元水果,第3選8元水果,第4 小時選8元水果,共15+10+8+8=41。思路分析
這道題首先是對于水果超市的起始時間和終止時間以及價格的存儲,比較方便的一個存儲方式就是用二維數組去存(這也是比較常用的方法)。
然后就是一個二維數組排序問題,按照價格從低到高排序,判斷水果超市的時間段符合要求,則結束內層循環。
參考代碼
import java.util.Arrays; import java.util.Scanner;public class Main1 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();int[][] arr = new int[m][3];for (int i = 0; i < m; i++) {arr[i][0] = in.nextInt();arr[i][1] = in.nextInt();arr[i][2] = in.nextInt();}Arrays.sort(arr, (a, b) -> (a[2] - b[2])); // 按價格升序排int res = 0;for (int i = 1; i <= n; i++) {for (int j = 0; j < m; j++) {if (arr[j][0] <= i && arr[j][1] >= i) {res += arr[j][2];break;}}}System.out.println(res);} }總結
以上是生活随笔為你收集整理的华为机试4.27:购买水果最便宜的方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 事务概念和事务四大特性和隔离级别
- 下一篇: 【FPGA教程案例31】通信案例1——基