51Nod1097 拼成最小的數

2022-05-19 19:27:51 字數 1010 閱讀 9520

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

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

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

最優的情況字串a+b設定num(x)為字串x代表的數字,num(a)10^|b|+num(b) < num(b)10^|a|+num(a) -> num(a)/(10^|a|-1) < num(b)/(10^|b|-1),排序即可。

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

#define io_opt ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)

string s[10020];

int n;

int cmp(string x,string y)

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

string ans="";

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

for(int i=0;i#include#include#include#includeusing namespace std;

typedef long double ld;

#define io_opt ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)

struct ee[10020];

int n;

int t[20]=;

int cmp(e x,e y)

int cur=0,tmp[20];

int main()

} sort(e+1,e+1+n,cmp);

int cnt=0;

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

for(int j=cur;j>=1;j--)

} }return 0;

}

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 聯接成的最小...

51Nod 1097 拼成最小的數

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