尽管我的代码适用于样本,但在测试集 1 中得到错误答案Google Kickstart 2020 Round A

问题描述

我的代码适用于我在 IDE 上尝试的示例和其他示例,但由于某种原因它不适用于测试用例。 我不知道如何使用数组,因为我们还没有在课堂上介绍它们,我想看看我是否可以只用循环和 if-else 来解决它。 任何帮助表示赞赏。

问题描述如下:

问题 有N栋房屋出售。第 i 间房子花费 A 美元购买。您有 B 美元的预算要花。

你最多可以买多少房子?

输入 输入的第一行给出了测试用例的数量,T.T 测试用例在后面。每个测试用例以一行包含两个整数 N 和 B 开始。第二行包含 N 个整数。第 i 个整数是 Ai,即第 i 个房子的成本。

输出 对于每个测试用例,输出一行包含 Case #x: y 的行,其中 x 是测试用例编号(从 1 开始),y 是您可以购买的最大房屋数。

限制 时间限制:每个测试集 15 秒。 内存限制:1GB。 1 ≤ T ≤ 100。 1 ≤ B ≤ 105。 1 ≤ Ai ≤ 1000,对于所有 i。 测试集 1 1 ≤ N ≤ 100。 测试集 2 1 ≤ N ≤ 105。 样品

输入

输出

3 4 100 20 90 40 90 4 50 30 30 10 10 3 300 999 999 999

案例#1:2 案例#2:3 案例#3:0

在示例案例 #1 中,您的预算为 100 美元。您可以花 20 + 40 = 60 美元购买第一和第三套房子。 在示例案例#2 中,您的预算为 50 美元。你可以花30 + 10 + 10 = 50美元购买1号、3号和4号房子。 在示例案例 #3 中,您的预算为 300 美元。你不能买任何房子(所以答案是 0)。

这是我的代码

import java.util.Scanner;
public class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(system.in);

        int testCases;
        int numberHouses;
        int budget;
        int costHouse;
        int howMany = 0;

        int totalCost;

        testCases = sc.nextInt();

        //loop for each test case
        for (int i=0; i < testCases; i++) {
            numberHouses = sc.nextInt();
            budget = sc.nextInt();

            howMany = 0;
            totalCost = 0;

            //loop for looking at house prices
            for (int j=0; j < numberHouses; j++) {
                costHouse = sc.nextInt();
                totalCost += costHouse;

                if ( totalCost <= budget ) {
                    howMany++;
                }
                else {
                    totalCost -= costHouse;
                }
            }
            System.out.println("Case #"+ (i+1) + ": " + howMany);
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)