【问题标题】:Always '-1 Output' ,In HackerRank "Electronics Shop" Question总是'-1 输出',在 HackerRank“电子商店”问题中
【发布时间】:2019-06-05 16:51:34
【问题描述】:

这是问题https://www.hackerrank.com/challenges/electronics-shop/problem的链接

这是我的代码,它传递了一些情况,但很少有输出是错误的,因为它返回“-1”作为每个输入的输出。

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        //Getting Input from the User
        int budget = scan.nextInt();
        int key_no = scan.nextInt();
        int usb_no = scan.nextInt();

        // Assigning some random value
        int maxkey = 0;
        int usbmax = 0;

        // Storing Cost of Keyboards in array
        int[] key_array = new int[key_no];
        for(int i=0;i<key_no;i++){
            key_array[i] = scan.nextInt();

            if(key_array[i] >= maxkey){
                maxkey = key_array[i];
            }
        }

        // Storing Cost of USB in array
        int[] usb_array = new int[usb_no];
        for(int j=0;j<usb_no;j++){
            usb_array[j] = scan.nextInt();

            if(usb_array[j] > maxkey){
                usbmax = usb_array[j];
            }
        }

        if(budget >= (maxkey+usbmax)){
            System.out.println(maxkey+usbmax);
        }
        else{
            System.out.println("-1");
        }

    }
}

10 2 3(预算、key_no、usb_no)

3 1(键盘成本)

5 2 8(USB 费用)

预期答案:“9”。 但输出:'-1'

【问题讨论】:

  • 好吧,因为 11 大于 10,所以您的代码行为正确。给定示例数据和代码,尚不清楚您的问题是什么。 编辑 我简要阅读了链接中的问题描述,从代码的作用来看,您似乎误解了它。我建议你再读一遍
  • if(usb_array[j] &gt; maxkey) ... 你的想法会很有趣。
  • 问题 1:@Tom 的评论。问题 2:您的代码读取所有值,但只考虑计算的最高价格。

标签: java arrays loops for-loop if-statement


【解决方案1】:

检查每个项目的最高价格总和是否低于预算是不够的。应该检查所有可能的组合。

int max_price = -1;

for(int key_price: key_array){
    for(int usb_price: usb_array){
        int total = key_price + usb_price;
        if(total <= budget && total > max_price){
            max_price = total;
        }
    }
}
System.out.println(max_price);

上述解决方案可能不是最佳解决方案。但只要 key_no 和 usb_no 不太大,它就可以达到目的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    相关资源
    最近更新 更多