当我运行这段代码时,为什么会给我错误的输出?在我的系统中,我得到了正确的输出。我的输出与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;
}
答案 0 :(得分:1)
您正在使用数组索引超出范围
fees()
您可以使用索引for(i = 1; i<=n; i++)
到n
来索引数组长度0
。因此,将两个循环都更改为
n-1
并删除无用的行
for(i = 0; i < n; i++)
此外,您不应该在循环内输出结果,因为如果数据输入顺序与示例不同,它将打印一次以上的结果。放在后面。
area[0] = 0;