我刚开始学习C并在线做练习。 网站告诉我,我提交的this question on codechef.com代码是错误的。
然而,当我在Mac终端上运行代码时,它工作正常!
任何人都可以帮我理解出了什么问题吗?谢谢你!另外,有没有人知道我可以请求其他人帮助调试或改进代码的任何网站?
#include <stdio.h>
int main() {
int T, N;
scanf("%d", &T);
int ans[T];
for (int i = 0; i < T; i++) {
int max = 0;
long long P, Q;
scanf("%d %lld %lld", &N, &P, &Q);
long long A[N];
for (int j = 0; j < N; j++) {
scanf("%lld", &A[j]);
}
for (int k = 0; k < N; k++) {
int quo = A[k] / 2;
int r = A[k] % 2;
if (Q == 0 && quo > 0) {
P = P - ((2 * quo) + r);
} else {
Q -= quo;
P -= r;
}
if ((P >= 0) && (Q >= 0)) {
max++;
}
}
ans[i] = max;
}
for (int m = 0; m < T; m++) {
printf("%d\n", ans[m]);
}
}
答案 0 :(得分:0)
不需要本地自动数组int ans[T];
,您可以在计算结果时输出结果。 T
可以与9999999
一样大,使用自动存储分配这样一个大型数组可能会在堆栈空间有限(<4 MB)的系统上调用未定义的行为。
您在Mac上运行的测试与codechef执行的测试不同。他们可能会通过传递大量测试用例来破坏您的程序。
此外,您的算法有多个缺陷: