zoukankan      html  css  js  c++  java
  • 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
    
     单独考虑组合为0的情况
     1 #include<iostream>
     2 #include<algorithm>
     3 #include<vector>
     4 #include<string>
     5 using namespace std;
     6 bool cmp(string a, string b){return a+b<b+a;}
     7 int main(){
     8   int n, i;
     9   vector<string> v;
    10   string ans="";
    11   cin>>n;
    12   v.resize(n);
    13   for(i=0; i<n; i++) cin>>v[i];
    14   sort(v.begin(), v.begin()+n, cmp);
    15   for(i=0; i<n; i++) ans+=v[i];
    16   for(i=0; i<ans.size(); i++)if(ans[i]!='0')break;
    17   if(i==ans.size()) cout<<"0";
    18   for(; i<ans.size(); i++) cout<<ans[i];
    19   return 0;
    20 }
    有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
  • 相关阅读:
    性能测试
    Oracle Install logs
    运维服务方案
    对字符串的查找,剪切,替换,提取(正则表达式)
    用java程序模拟网站的登录以及文件批量上传
    HDU_1542_(树状数组)
    HDU_3792_(素数筛+树状数组)
    Codeforces_791_B. Bear and Friendship Condition_(dfs)
    POJ_1125_(dijkstra)
    POJ_1088_(dp)(记忆化搜索)
  • 原文地址:https://www.cnblogs.com/mr-stn/p/9155131.html
Copyright © 2011-2022 走看看