HDOJ 1106 排序 [stable_sort]

求解思路:

调用泛型算法stable_sort().注意几类特殊情况的考虑.如005555,0065500,00000,555000等.

 

AC代码:

 

#include <iostream> #include <string> #include <vector> #include <algorithm> #include <cstring> using namespace std; bool isShorter(const string &s1, const string &s2) { if(s1.size()!=s2.size()) return s1.size()<s2.size(); else return strcmp(s1.c_str(),s2.c_str())<0; } int main() { string str; while(cin>>str) { string s,_s; str+='5'; vector<string> vec; size_t i; for(i=0;i!=str.size();++i) { if(str[i]!='5') s+=str[i]; else if(s!=""){ size_t k,j; for(k=0;s[k]=='0';++k); for(j=k;j<s.size();++j) _s+=s[j]; if(k==s.size()) _s="0"; vec.push_back(_s); _s=s=""; } } stable_sort(vec.begin(),vec.end(),isShorter); for(vector<string>::iterator iter=vec.begin(); iter!=vec.end();++iter) { cout << *iter; if(iter!=vec.end()-1) cout << " "; } cout << endl; } return 0; }

你可能感兴趣的:(HDOJ 1106 排序 [stable_sort])