[关闭]
@yexiaoqi 2022-05-24T11:45:46.000000Z 字数 777 阅读 411

最大消费数

刷题 华为机试


题目:双十一众多商品进行打折销售,小明想购买自己心仪的一些物品,但由于购买资金限制,所以他决定从众多心仪商品中购买三件,而且想尽可能得花完资金
现在请你设计一个程序 计算小明尽可能花费的最大资金数

难度:*

输入描述
输入第一行为一维整型数组m,数组长度小于100,数组元素记录单个商品的价格,单个商品加个小于1000
输入第二行为购买资金的额度r,r<100000
输入格式正确无需考虑输入错误情况
输出描述
输出为满足上述条件的最大花费额度
注意:如果不存在满足上述条件的商品请返回-1

示例1

输入:23,26,36,27
      78
输出:76
说明:金额23、26、27得到76而且最接近且小于输入金额78

示例2

输入:23,30,40
     26
输出:-1
说明:因为输入的商品无法满足3件之和小于26,故返回-1

  1. public static void main(String[] args) {
  2. Scanner sc = new Scanner(System.in);
  3. while(sc.hasNext()){
  4. String[] p = sc.next().split(",");
  5. int[] m = new int[p.length];
  6. for (int i=0; i<p.length; i++){
  7. m[i] = Integer.parseInt(p[i]);
  8. }
  9. int money = sc.nextInt();
  10. int max = -1;
  11. for (int i = 0; i < m.length; i++) {
  12. for (int j = 0; j < m.length; j++) {
  13. for (int k = 0; k < m.length; k++) {
  14. if (i==j || i==k || j==k) continue;
  15. int sum = m[i]+m[j]+m[k];
  16. if (sum<money && sum>max){
  17. max = sum;
  18. }
  19. }
  20. }
  21. }
  22. System.out.println(max);
  23. }
  24. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注