牛客網---数列(数字文字列注意の考え方について)
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<