苹果和橘子的问题。

12个测试用例中只有3个被清除。几个小时以来想不出其他任何东西。

样本输入0

7 11
5 15
3 2
-2 2 1
5 -6


样本输出0

1
1


问题:https://www.hackerrank.com/challenges/apple-and-orange/problem



int main(){

    int s;
    int t;
    scanf("%d %d",&s,&t);

    int a;
    int b;
    scanf("%d %d",&a,&b);

    int m;
    int n;
    scanf("%d %d",&m,&n);

    int *apple = malloc(sizeof(int) * m);
    for(int apple_i = 0; apple_i < m; apple_i++){
       scanf("%d",&apple[apple_i]);
    }


    int *orange = malloc(sizeof(int) * n);
    for(int orange_i = 0; orange_i < n; orange_i++){
       scanf("%d",&orange[orange_i]);
    }

    int fellap=0;
    int fellor=0;
    int d;

    for(int apple_i = 0; apple_i < m; apple_i++){
        d=apple[apple_i]+a;
        f(d>=s && d<=t){
            fellap++;
        }
    }

    for(int orange_i = 0; orange_i < n; orange_i ++){
        d=orange[orange_i]+b;
        if(d>=s&&d<=t){
            fellor++;
        }
    }

    printf("%d\n", fellor);
    printf("%d\n", fellap);

    return 0;
}

最佳答案

您代码中的错误是一个非常琐碎的错误。您已切换了橙子和苹果的输出。更改

printf("%d\n", fellor);
printf("%d\n", fellap);




printf("%d\n", fellap);
printf("%d\n", fellor);


我不认为需要将所有值读入数组。您可以简单地遍历输入并同时进行计算。这是一个通过所有测试用例的示例:

通过所有测试用例的工作代码:

int main(){
    int s;
    int t;
    scanf("%d %d",&s,&t);
    int a;
    int b;
    scanf("%d %d",&a,&b);
    int m;
    int n;
    scanf("%d %d",&m,&n);

    int noApples=0;
    int noOranges=0;

    for(int apple_i = 0; apple_i < m; apple_i++){
        int apple;
        scanf("%d",&apple);
        if (apple+a >= s && t >= apple+a)
            noApples++;
    }

    for(int orange_i = 0; orange_i < n; orange_i++){
        int orange;
        scanf("%d",&orange);
        if (orange+b >= s && t >= orange+b)
            noOranges++;
    }
    printf("%d\n%d\n", noApples, noOranges);
    return 0;
}

关于c - 无法清除测试用例:应该为此编写代码:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44998081/

10-11 19:14