CodeChef购买新的平板电脑解决方案

时间:2019-02-24 15:04:02

标签: c

当我运行这段代码时,为什么会给我错误的输出?在我的系统中,我得到了正确的输出。我的输出与link中给出的输出相同,但是他们仍然不会接受。

int main()
{

    int t, n, b, i;

    scanf("%d", &t);

    while (t--) {
        scanf("%d %d", &n, &b);
        int area[n];
        int max = 0;
        area[0] = 0;
        int p[n], w[n], h[n];
        int count = 0;

        for (i = 1; i <= n; i++) {
            scanf("%d %d %d", &w[i], &h[i], &p[i]);
        }

        for (i = 1; i <= n; i++) {
            if (p[i] <= b) {
                area[i] = w[i] * h[i];
                if (area[i] > max) {
                    max = area[i];
                    printf("%d\n", max);
                    count++;
                }
            }
        }
        if (count == 0) {
            printf("no tablet\n");
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您正在使用数组索引超出范围

fees()

您可以使用索引for(i = 1; i<=n; i++) n来索引数组长度0。因此,将两个循环都更改为

n-1

并删除无用的行

for(i = 0; i < n; i++)

此外,您不应该在循环内输出结果,因为如果数据输入顺序与示例不同,它将打印一次以上的结果。放在后面。

area[0] = 0;