Google C编程中的kickstart问题说错答案

 收藏

我正在尝试解决C编程中的kickstart问题,我尝试了Round 2020的第一个问题。它在我的笔记本电脑中显示了正确的输出,但是kickstart给出了错误的答案,有时甚至是运行时错误。 我不知道这是怎么了。

这是我的代码:

#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a, const void *b){
    return *(int *)a-*(int *)b;
}
void solve(int i){
    int n, b, a[100000];
    scanf("%d%d", &n, &b);
    for(int i=0;i<n;++i){
        scanf("%d", &a[i]);
    }
    qsort(a,n,sizeof(int), cmp);
    int ans = 0;
    while(b>=a[ans]){
        b-=a[ans];
        ++ans;
    }
    printf("Case #%d: %d\n", i, ans);
}
void main(){
    int t,i=1;
    scanf("%d",&t);
    while (t--)
    {   
        solve(i);
        ++i;
    }
}

问题是:

Link : https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ffc7/00000000001d3f56?show=progress

有N栋房屋待售。第i座房子要花艾美金购买。您的预算为B美元。

您最多可以购买多少套房屋?

输入值 输入的第一行给出了测试用例的数量,T。每个测试用例都从包含两个整数N和B的一行开始。第二行包含N个整数。第i个整数是Ai,即第i个房屋的成本。

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

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

测试集1 1≤N≤100。

测试集2 1≤N≤105。

样品

输入值

3

4 100

20 90 40 90

4 50

30 30 10 10

3 300

999999999

输出量

案例1:2

案例2:3

情况3:0

在示例案例1中,您的预算为100美元。您可以以20 + 40 = 60美元的价格购买第一和第三座房屋。 在示例案例2中,您的预算为50美元。您可以以30 + 10 + 10 = 50美元的价格购买第一,第三和第四座房屋。 在示例案例3中,您的预算为300美元。您不能购买任何房屋(因此答案为0)。

提前致谢 :)

回复