1038. Recover the Smallest Number (30)

Given a collection of number segments, you are supposed to recover the smallest number from them. For example, given {32, 321, 3214, 0229, 87}, we can recover many numbers such like 32-321-3214-0229-87 or 0229-32-87-321-3214 with respect to different orders of combinations of these segments, and the smallest number is 0229-321-3214-32-87.

Input Specification:

Each input file contains one test case. Each case gives a positive integer N (<=10000) followed by N number segments. Each segment contains a non-negative integer of no more than 8 digits. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print the smallest number in one line. Do not output leading zeros.

Sample Input:

5 32 321 3214 0229 87

Sample Output:

22932132143287
复制代码
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(string a, string b){
    return a + b < b + a;
}
string str[100010];
int main(){
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> str[i];
    } 
    sort(str,str+n,cmp);
    string ans;
    for(int i = 0; i < n; i++){
        ans += str[i];
    } 
    while(ans.size() != 0 && ans[0] == '0'){
        ans.erase(ans.begin());
    }
    if(ans.size() == 0) cout << 0;
    else cout << ans;
}
复制代码

 

posted @   王清河  阅读(101)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示