您的位置:首页 > 其它

HDOJ 1106 排序 [stable_sort]

2009-10-28 13:55 337 查看
求解思路:

调用泛型算法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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: