始终为“ -1输出”,在HackerRank“电子商店”中提问

时间:2019-06-05 16:51:34

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

这是问题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'

1 个答案:

答案 0 :(得分:0)

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

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不太大,它就可以达到目的。