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

来源:互联网 发布:知乎删除问题 编辑:程序博客网 时间:2024/06/06 03:10
题目描述
设有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 500001using 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;}


阅读全文
0 0
原创粉丝点击