我正在尝试从数组元素中构造最大数。下面给出的我的实现在某些情况下工作正常,而在其他一些情况下它给出错误“Abort(3)(SIGABRT)的Abort信号”。为什么?帮帮我!
#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 //size of array
54 546 548 60 //elements of array
7条答案
按热度按时间ej83mcc01#
这是由于
stoi
函数的缘故,它不能处理非常大的数字。对于
string
到int
的转换,请尝试以下方法。手动将
string
转换为int
的算法:变量
x
将存储所讨论字符串的整数值。2eafrhcq2#
这个错误发生时你是循环无限的时间或弹出操作没有完成,我得到了同样的错误以前,但可以设法解决后
9lowa7mx3#
此错误通常在您访问不可用的内容时出现,如内存等。请看示例,我将col声明为m,但将n的大小声明为它,(因此,当我的程序尝试访问m以外的位置时,它会抛出此错误)
这些都是小错误,但可能会花费大量时间
)
以上代码是二元迷宫(0,1)问题。(图形主题
rfbsl7qr4#
这是由于INT_MAX和INT_MIN值(即2^31-1和-2^31)不能存储在整数类型数据中;同样,int z=stoi(string x)将string转换并返回为int
6ie5vjzr5#
根据您的程序,要通过将数组的第一个元素和最后一个元素相加(字符串方式)来获得最大数,请尝试以下操作:
以便使用数组的所有元素,而不是仅使用第一个和最后一个元素。
c9qzyr3d6#
不使用'stoi'函数,而是使用以下代码将字符串转换为整数:
sbtkgmzw7#
如果程序本身检测到错误,则使用call to abort()生成此信号。标准库也使用此信号报告内部错误。c++中的assert()函数也使用abort()生成此信号。