牛客網---数列(数字文字列注意の考え方について)

2207 ワード

タイトルの説明


n個の正の整数が設けられ、それらを一列に接続し、最大の複数の整数を構成する.
例えば、n=3の場合、3つの整数13312343、連結された最大整数は34331213である.
例えば、n=4の場合、4つの整数7,13,4246が接続された最大整数は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.2つの数の組み合わせについて、最大の整数がほしいです.最初のビットをもっと前の位置に置く必要があります.これはまさに文字列比較のルールで、2つの文字列比較式は、文字のascii値を1つずつ比較し、サイズを分けた後、後ろのものを比較しません.
例:
string str1="abc";
string str2="Aac";

'a'のascii値は97,'A'のascii値は65なのでstr 1>str 2
通常、文字列比較関数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<