PAT (Advanced Level) 1038. Recover the Smallest Number (30)
注意前导零的消去。
#include <iostream> #include <string> #include <sstream> #include <algorithm> using namespace std; string s[10000+10]; int n; bool cmp(const string &a, const string &b) { return a+b<b+a; } int main() { cin>>n; for(int i=1;i<=n;i++) cin>>s[i]; sort(s+1,s+1+n,cmp); string ans; for(int i=1;i<=n;i++) ans=ans+s[i]; int flag=0; for(int i=0;i<ans.size();i++) { if(ans[i]!='0') { flag = 1; for(int j=i;j<ans.size();j++) cout<<ans[j]; break; } } if(flag==0) cout<<"0"; cout<<endl; return 0; }