gpt4 book ai didi

c++ - 如何解决 codechef ide 上的 sigabrt 错误

转载 作者:行者123 更新时间:2023-12-02 10:32:57 26 4
gpt4 key购买 nike

Sigabrt 运行时错误发生 fatal error ,因为断言语句没有返回 true?或者使用过多的内存,我无法弄清楚我在这里做错了什么,帮帮我?

(codeforces 上的问题 1343 C)link
所以这里是代码。

#include <iostream>
#include <stdlib.h>
#include<vector>
using namespace std;
int check(int i,vector<int> a) {
if (a[i] > 0) {
return 1;
}
else return 0;
}

int main() {
int t;
cin >> t;
while (t--)
{
long int n;
cin >> n;
vector<int> a(n), b;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int i = 0;
while (i < n)
{
int max = a[i];
int s = check(i,a);
i++;

while (i<n && check(i,a)== s) {
if (a[i] > max)max = a[i];
i++;
}
b.push_back(max);
}
int s = 0;
for (int k = 0; k< b.size(); k++) {
s += b[i];
}
cout << s << endl;
}
}



最佳答案

我已经调试了你的代码和上述问题已接受修改后的代码.
你犯的错误:
1. 在下面的循环中,值为 i'th indexvector<int> b正在添加到 long int s .相反,b[k]应添加到 long int s因为 循环中使用的变量是 k不是 i .

for (int k = 0; k< b.size(); k++) {
s += b[i];
}
2. 在问题中, variable n 的范围给出为 (1 ≤ n ≤ 2.10^5)。所以,使用 int n 是安全的而不是 long int n .此外,当我在 codeforces 上提交代码时,当我使用 long int n 时,它给了我有符号整数溢出错误。 .
3. 您需要使用 long long s而不是 long int s因为数组 A 的每个元素的值介于 (−10^9 ≤ a[i] ≤ 10^9 , ai ≠ 0) 之间,当我们添加元素时,它很容易超过 intlong int范围。
4. 虽然,当我使用 vector<int> a 时,答案被接受了在函数中
int check(int i,vector<int> a) {
if (a[i] > 0) {
return 1;
}
else return 0;
}
但是正如用户 Scheff 所说并且正确的是它会在空间和时间上受到惩罚,您应该使用引用调用,即 vector<int> &a .
修改代码:
#include <iostream>
#include <stdlib.h>
#include<vector>
using namespace std;
int check(int i, vector<int> &a) {
if (a[i] > 0) {
return 1;
}
else return 0;
}

int main() {
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
vector<int> a(n), b;
for (int i = 0; i < n; i++) {
cin >> a[i];
}


int i = 0;
while (i < n)
{
int max = a[i];
int s = check(i,a);
i++;

while ((i<n) && (check(i,a)== s)) {
if (a[i] > max)
max = a[i];
i++;
}
b.push_back(max);
}

long long s = 0;
for (int k = 0; k< b.size(); k++) {
s += b[k];
}
cout << s << endl;
}
}
已接受答案的屏幕截图:

关于c++ - 如何解决 codechef ide 上的 sigabrt 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61630766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com