1097 拼成最小的數
基準時間限制:1 秒 空間限制:131072 kb 分值: 20 難度:3級演算法題
收藏關注
設有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行。
input示例455
31312
33output示例
312313355
string a,b;
當a+b < b+a時 顯然a+b拼成的數更小
so 快排跑一遍
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
using
namespace
std;
#define ll long long
#define ull unsigned long long
#define pii pair
#define inf 1000000007
#define pll pair
#define pid pair
//#define check_time
bool comp(const
string&a,const
string&b)
sort(s.begin(),s.end(),comp);
for(int i=0,index=0;ifor(int j=0;jif(index>0&&index%1000==0)
cout
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 聯接成的最小整數為 3...
51Nod1097 拼成最小的數
設有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 ...