【发布时间】:2021-01-14 12:15:41
【问题描述】:
我使用前缀和来解决这个问题,它通过了一些测试用例,但对于大量输入(n,更长的数组),它似乎失败了。我无法在代码中找到错误。我已经粘贴了下面的代码:
#include<stdio.h>
using namespace std;
int main() {
long long t, n, arr[100000], pre[100000];
bool val = true;
scanf("%lld", &t);
while (t--) {
scanf("%lld", &n);
arr[0] = 0;
for (int i = 1; i <= n; i++) {
scanf("%lld", &arr[i]);
}
if (n == 1)
printf("YES\n");
else if (n == 2)
printf("NO\n");
pre[0] = arr[0];
for (int i = 1; i <= n; i++) {
pre[i] = pre[i - 1] + arr[i];
}
for (int i = 1; i <= n; i++) {
if (pre[n] - pre[i] == pre[i - 1]) {
printf("YES\n");
val = false;
}
}
if (val) {
printf("NO\n");
}
}
return 0;
}
【问题讨论】:
-
将每个测试用例的
val初始化为true -
@rishab 您的代码行在此处无法执行:onlinegdb.com/r1GBon6CD
-
@asds_asds 即使在每个案例都将其初始化为 true 之后,我的两个测试用例仍然是错误的。菜鸟错了。
-
@Anshu 在 C++ 编译器上试试,而不是 C
-
@rishab - 您使用的是 c 而不是 c++ 的语法,请在最后检查您使用的是哪种语言。