关于 ! c++ :Runtime Error:Segmentation fault!

Description对N个字符串排序。0<N<=50000。每个字符串长度不超过50000,所有字符串长度总和不超过1000000。Input第一行读入N。后面N行,每... Description
对N个字符串排序。
0<N<=50000。每个字符串长度不超过50000,所有字符串长度总和不超过1000000。
Input
第一行读入N。
后面N行,每行一个字符串(只包含字母)。
Output
输出共N行,按字典序从小到大输出
Sample Input

5
bcdef
qwer
tyuiphdjf
asdfghjklzzzz
z
Sample Output
asdfghjklzzzz
bcdef
qwer
tyuiphdjf
z
以上是问题描述,下面是我的代码:
#include <iostream>
#include<string>
using namespace std;
int main()
{
int n,i,j;
string a[21];
string t;
cin>>n;
for(i=0; i<n; i++)
{
cin>>a[i];
}
for(i=0; i<n-1; i++)
{
for(j=0; j<n-i-1; j++)
{
if(a[j+1][0]<a[j][0])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<'\n';
}
}
但交上oj去总是显示
Runtime Error:Segmentation fault!本人新手求各位大神帮帮忙呀 !困惑好久 !
展开
 我来答
百度网友28b4182
2013-06-28 · TA获得超过7220个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1797万
展开全部
数组开小了.题目中说了字符串有很多个的,而且每一个的长度也很长.

这题的正确解法是字典树.把他们建在树中,然后DFS一下就可以了.

如果需要代码请追加分数.
更多追问追答
追问
那数组要开到多大合适呢
追答
这个开不了数组。因为你如果要开的话就要开50000*50000的数组,但是这样肯定超内存的。而题目也有说了所有字符总长充不超过100万的。
如果是字典树,数组最大开100万就够了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式