hdu1106 不知为何wa 各种情况都试过了
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
string s;
bool comp(string s1,string s2){
if(s1.length()!=s2.length()) return s1.length()<s2.length();
for(int i=0;i<(int)s1.length();i++)
if(s1[i]<s2[i]) return true;
else return false;
return true;
}
int main(){
size_t p,pt;
string t;
while(cin>>s){
vector<string> a;
p=s.find_first_of("5");
do{
if(p>0){
t.assign(s,0,p);
pt=t.find_first_not_of("0");
if(pt==string::npos) t="0";
else t.assign(t,pt,t.length()-pt);
a.push_back(t);
if(p!=string::npos) s.assign(s,p,s.length()-p);
else s="";
}
p=s.find_first_not_of("5");
if(p!=string::npos) s.assign(s,p,s.length()-p);
else s.assign("");
p=s.find_first_of("5");
}while(p!=string::npos);
if(s.length()){
t.assign(s);
pt=t.find_first_not_of("0");
if(pt==string::npos) t="0";
else t.assign(t,pt,t.length()-pt);
a.push_back(t);
}
sort(a.begin(),a.end(),comp);
for(int i=0;i<(int)a.size();i++){
if(i) printf(" ");
cout<<a[i];
}
printf("\n");
s.clear();
}
return 0;
}
[解决办法]
比较函数错了,应该为
bool comp(string s1,string s2){
if(s1.length()!=s2.length()) return s1.length()<s2.length();
for(int i=0;i<(int)s1.length();i++)
if(s1[i]<s2[i]) return true;
else if(s1[i]>s2[i]) return false;
return true;
}
