贪心基础 最大整数

来源:互联网 发布:dvr监控软件下载 编辑:程序博客网 时间:2024/05/29 02:35

问题 G: 最大整数

时间限制: 1 Sec  内存限制: 128 MB
提交: 67  解决: 18
[提交][状态][讨论版]

题目描述

设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613

输入

输入格式如下: n n个数

输出

输出n个数连接起来的最大整数

样例输入

313  312  343

样例输出

34331213
自己做的时候wa了好多次,刚刚开始学贪心,还学得很不好。这里可以给大家几组测试数据:3 10 100 100; 5 100 102 9 12 150;。。。

这题一直很头疼比较函数的写法,尝试了int,也尝试了char数组,最后还是学到了string在这里的妙用,感觉有必要记录一下。

#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>using namespace std;struct node{    string a;};inline bool cmp(node x,node y){    if(x.a+y.a>y.a+x.a)return 1;    else return 0;}int main(){    int n;    while(cin>>n)    {        int t=n,r=0;        node m[25];        while(t--)        {            cin>>m[r++].a;        }        sort(m,m+n,cmp);        for(int i=0;i<n;i++) cout<<m[i].a;        printf("\n");    }    return 0;}



原创粉丝点击