pat1038. Recover the Smallest Number

来源:互联网 发布:香港中文大学gpa算法 编辑:程序博客网 时间:2024/04/30 09:19

此题不难,只要写好sort的compare函数即可,但是要特别注意输入为0时的坑;

AC代码如下:

#include<iostream>#include<string>#include<algorithm>#include<vector>using namespace std;int cmp(string s1,string s2){int i,j = 0,flg = 0,minsize,maxsize;string s3 = "";minsize = s1.size()>s2.size()?s2.size():s1.size();maxsize = s1.size()>s2.size()?s1.size():s2.size();for(i = minsize;i < maxsize;++i){s3 += s1.size()>s2.size()?s1[i]:s2[i];}for(i = 0;i < minsize;++i)if(s1[i] != s2[i]){flg = 1;break;}if(s1 == ""||s2 == ""||flg == 1){return s1 < s2;}else {return cmp(s1.size()>s2.size()?s3:s1,s1.size()>s2.size()?s2:s3);}}int main(void){string s[10000];int n,i;cin >> n;for(i = 0;i < n;++i)cin >> s[i];sort(s,s+n,cmp);string ss;for(i = 0;i < n;++i)ss += s[i];int flg = 0;for(i = 0;i < ss.size();++i){if(ss[i] != '0' || flg == 1){flg = 1;cout << ss[i];}}if(flg == 0)cout << "0";return 0;}


0 0