“来自 abort(3) (SIGABRT) 的中止信号”。为什么只针对某些情况?

新手上路,请多包涵

我正在尝试从数组元素中形成最大数量。下面给出的我的实现在某些情况下工作正常,而对于其他一些情况,它给出错误 “Abort signal from abort(3) (SIGABRT)” 。为什么?帮帮我!

 #include <iostream>
#include<bits/stdc++.h>
using namespace std;

int main() {
int t;
cin>>t;
while((t--)>0){
    int n;
    cin>>n;
    int a[n];
    string s="";
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(i==0){s+=to_string(a[i]); continue;}
        string s1 = s+to_string(a[i]); //sX
        string s2 = to_string(a[i])+s; //Xs

        if(stoi(s1)>=stoi(s2))s=s1;
        else s = s2;
    }
    cout<<s<<endl;
    }

return 0;
 }

对于以下情况,我的代码给出了错误

4 //数组大小
54 546 548 60 //数组元素

原文由 Mahesh Nagarwal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 963
2 个回答

这是由于 stoi 功能。这不适用于非常大的数字。

对于 stringint 转换,请尝试以下方法。

手动将 string 转换为 int 的算法:

 int x = 0; // may take long long
for(int i = 0; i < s.length(); i++)
    x = x * 10 + s[i] - '0';

变量 x 将存储讨论字符串的整数值。

原文由 Dhavalkumar Prajapati 发布,翻译遵循 CC BY-SA 4.0 许可协议

当您循环无限时间或弹出操作未完成时会发生此错误,我之前遇到相同的错误,但可以设法解决之后

原文由 Abhisaware 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题