拼成最小的數

2021-08-10 01:49:20 字數 864 閱讀 6561

設有n個正整數,將它們聯接成一排,組成乙個最小的多位整數。

例如:

n=2時,2個整數32,321連線成的最小整數為:32132,

n=4時,4個整數55,31,312, 33 聯接成的最小整數為:312313355

input

第1行:1個數n。(2 <= n <= 10000)

第2 - n + 1行:每行1個正整數。(1 <= a

i

<= 10^9)

output

輸出拼在一起的最小整數。由於資料量太大,請以1000個字元為單位,輸出到一行裡,最終剩餘的不足1000個字元的部分,輸出到單獨1行。

sample input

4

5531

31233

sample output

312313355

一開始想在,後面隨便加乙個串首值,後來發現了反例 

比如1應該是101,不是110,然而我們strcmp的時候,就會有這樣的問題。感覺拼接的感覺就是在  看看110還是101大。這就是思路了。

#include#include#include#include#includeusing namespace std;

char ans[1110000];

string str[10010];

int cmp(string s1,string s2)

sort(str+1,str+n+1,cmp);

int now=0;

for(int i=1;i<=n;i++){

int len=str[i].length();

for(int j=0;j

1097 拼成最小的數

1097 拼成最小的數 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 設有n個正整數,將它們聯接成一排,組成乙個最小的多位整數。例如 n 2時,2個整數32,321連線成的最小整數為 32132,n 4時,4個整數55,31,312,33 聯接成的最小整數為 3...

51Nod 1097 拼成最小的數

acm模版 排序,然後按照輸出規定輸出即可。這裡的重點是排序準則 如果兩個數長度一樣,則從小到大排 如果兩個數長度不一樣,則從高位開始比較,依然遵循從小到大排 比如說1 12,11 12,11 112 1122 重要的事說一遍,細節決定成敗!要盡量考慮完全各種情況,尤其是當a是b字首時的情況!如 4...

51NOD 1097 拼成最小的數

1097 拼成最小的數 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 收藏關注 設有n個正整數,將它們聯接成一排,組成乙個最小的多位整數。例如 n 2時,2個整數32,321連線成的最小整數為 32132,n 4時,4個整數55,31,312,33 聯接成的最小...