0
点赞
收藏
分享

微信扫一扫

51Nod1097 拼成最小的数(技巧排序)


排序规则:

两个字符串a,b。

如果ab<ba 那就a在b之前。

比如a=312,b=31.

31231<31312

所以312在31之前。

排完序就是按照规则输出就行了。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
using namespace std;
bool cmp(string a,string b)
{
string s1=a+b;
string s2=b+a;
return s1<s2;
}
int main()
{
string str[10005];
int n,i;
cin>>n;
for(i=0;i<n;i++)
cin>>str[i];
sort(str,str+n,cmp);
int len=0;
for(i=0;i<n;i++)
{
len+=str[i].length();
if(len>=1000)
{
len-=str[i].length();
for(int j=0;j<str[i].length();j++)
{
cout<<str[i][j];
len++;
if(len==1000)
cout<<endl;
}
}
else
cout<<str[i];
len%=1000;
}
cout<<endl;
return 0;
}

 

举报

相关推荐

0 条评论