求问为什么会报错
  • 板块学术版
  • 楼主yhxcj
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/11/29 15:44
  • 上次更新2024/11/29 18:57:18
查看原帖
求问为什么会报错
920435
yhxcj楼主2024/11/29 15:44
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
bool guize(string one,string two)
{
    return one+two<=two+one?true:false;
}
int main()
{
    int n;
    string lian[200001];
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        cin>>lian[i];
    sort(lian+1,lian+1+n,guize);
    for(int i=1;i<=n;i++)
        cout<<lian[i];
    return 0;
}

在做一道站外题时发现,以上代码在这组测试数据下会报错,但把

return one+two<=two+one?true:false;

改为

return one+two<two+one?true:false;

就不会报错,同时能AC

sort(lian+1,lian+1+n,guize);

改为

stable_sort(lian+1,lian+1+n,guize);

也可以

有没有谷友帮忙看一下,全机房的人被硬控了一个下午了。我们在Linux下的Codeblocks和Windows下的Dev上进行了测试,初步猜测是访问越界之类的问题。

2024/11/29 15:44
加载中...