牛客网---数串(关于数字字符串提醒的思路)

题目描述

设有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

开始看到这道题的时候想的是如何比较数字的大小,但是这样做是非常麻烦的。在这里我们用的是思路是字符串的冒泡排序。以下是一些需要用到的知识点。

1.vector,C++中非常有用的容器,可以存放各个类型的对象,在这里我们用来存放string类型对象。vector的一些用法

实例:

vectortest;

//建立一个vector,int为数组元素的数据类型,test为动态数组名

简单的使用方法如下:

//建立一个vector

vectortest;
test.push_back(1);
test.push_back(2);//把1和2压入vector,这样test[0]就是1,test[1]就是2

2.对于两个数的组合,我们想要一个最大的整数,我们需要的是将第一位更大的放在前面的位置。这正是字符串比较的规则,两个字符串比较式,会逐个比较字符的ascii值,分出大小后,对后面的不再比较

例如:

string str1="abc";
string str2="Aac";

'a'的ascii值为97,'A'的ascii值为65,所以str1>str2

通常我们会使用到字符串比较函数strcmp(在之后会详解)

下面是详细代码

#include
#include
#include
#include
using namespace std;
    bool fun(string a,string b)
    {
    return a>b;
    }
    int main ()
    {
    int n;
    cin>>n;
    vector String1;
    string s;
    while(n--)
    {
    cin>>s;
    String1.push_back(s);
    }
    for(int j=0;j::iterator item=String1.begin();
    while(item!=String1.end())
    {
        cout<<*item;
    ++item;
    }
    }




你可能感兴趣的:(牛客网)