牛客网------数串题

题目描述

设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343,连成的最大整数为34331213。
如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。

输入描述:

有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)。

输出描述:

每组数据输出一个表示最大的整数。

示例1

输入

2 12 123 4 7 13 4 246

输出

12312 7424613

我用的C++,解答是:

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
bool big_to_small(string s1,string s2)
{
    return (s1+s2)>(s2+s1);
}
int main()
{
    int num;
    vector<string> input;
    string in;
    while(cin>>num)
    {
        for(int i=0;i<num;i++)
        {
            cin>>in;
            input.push_back(in);
        }
    }
    sort(input.begin(),input.end(),big_to_small);
    for(vector<string>::iterator it=input.begin();it!=input.end();it++)
        cout<<*it;
}

若有好的方法欢迎交流!

备注:

C++ sort排序函数用法

sort类函数:

函数名 功能描述
sort 对给定区间所有元素进行排序
stable_sort 对给定区间所有元素进行稳定排序
partial_sort 对给定区间所有元素部分排序
partial_sort_copy 对给定区间复制并排序
nth_element 找出给定区间的某个位置对应的元素
is_sorted 判断一个区间是否已经排好序
partition 使得符合某个条件的元素放在前面
stable_partition 相对稳定的使得符合某个条件的元素放在前面

需要头文件<algorithm>

语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认非降序排序。

以int为例的基本数据类型的sort使用

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    int a[5]={1,3,4,2,5};
    sort(a,a+5);
    for(int i=0;i<5;i++)
            cout<<a[i]<<' ';
    return 0;
 }     

因为没有cmp参数,默认为非降序排序,结果为:

1 2 3 4 5

若设计为非升序排序,则cmp函数的编写:

bool cmp(int a,int b)

{

  return a>b;

}

猜你喜欢

转载自blog.csdn.net/qq531958586/article/details/82890670
今日推荐