您的位置:首页 > 其它

整数连接 HNUST 1544(贪心 字典序排列变形 string +sort )

2017-12-09 20:43 363 查看
题目描述

设有n个正整数,将它们联接成一排,组成一个最小的多位整数。例如,3个整数32,3,21连接成的最小整数为:21323。

既然这是第一个题,那就要简单一点,不然很多参赛选手会很伤心的,因此,我特地将这个题目简化了一下,限定n个正整数的取值为1至99之间的正整数。

输入

先输入正整数个数n的值(1<=n<=50);

然后输入n个正整数(取值范围为1~99)。

输出

输出n个正整数连接而成的最小整数。

样例输入

3

32 3 21

样例输出
21323

思路:贪心   2个字符数组的顺序比较((a.s+b.s)<(b.s+a.s))

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define maxn 500001
using namespace std;
int n;
struct data
{
string s;
}A[maxn];

bool cmp(data a,data b)
{
if((a.s+b.s)<(b.s+a.s))
return 1;
return 0;
}

int main()
{

scanf("%d",&n);
for(int i=1;i<=n;i++)
cin>>A[i].s;

sort(A+1,A+n+1,cmp);
for(int i=1;i<=n;i++)
cout<<A[i].s;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符串