这是问题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'
答案 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不太大,它就可以达到目的。