WC:

1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 7 string judge(string &s) 8 { 9 int i = 0; 10 for(; i < s.size() && s[i] == '0'; ++i); 11 string t(s.begin()+i, s.end()); 12 if(i == s.size()) 13 t = "0"; 14 s = t; 15 return s; 16 } 17 void f(string& a, vector<string>& svec) 18 { 19 int beg, end; 20 beg = 0; 21 for(int i = 0; i < a.size(); ++i) 22 { 23 if(a[i] == '5') 24 { 25 string t(a.begin()+beg, a.begin()+i); 26 svec.push_back(judge(t)); 27 while(a[i] == '5') 28 i++; 29 beg = i; 30 } 31 } 32 if(*(a.end()-1) != '5') 33 { 34 string t(a.begin()+beg, a.end()); 35 svec.push_back(judge(t)); 36 } 37 } 38 bool cmp(string a, string b) 39 { 40 int flag = true; 41 if(a.size() != b.size()) 42 return a.size()<b.size(); 43 else 44 return a<b; 45 } 46 47 void out(vector<string> s) 48 { 49 cout << s[0]; 50 for(int i = 1; i < s.size(); ++i) 51 cout << " " << s[i]; 52 cout << endl; 53 } 54 int main() 55 { 56 string a; 57 while(cin >> a) 58 { 59 vector<string> svec; 60 f(a, svec); 61 //out(svec); 62 sort(svec.begin(), svec.end(), cmp); 63 out(svec); 64 } 65 return 0; 66 }
没有考虑到555551这种情况:

1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 7 string judge(string &s) 8 { 9 int i = 0; 10 for(; i < s.size() && s[i] == '0'; ++i); 11 string t(s.begin()+i, s.end()); 12 if(i == s.size()) 13 t = "0"; 14 s = t; 15 return s; 16 } 17 void f(string& a, vector<string>& svec) 18 { 19 int beg, end; 20 for(beg = 0; a[beg] == '5'; ++beg);//555551 21 for(int i = beg+1; i < a.size(); ++i) 22 { 23 if(a[i] == '5') 24 { 25 string t(a.begin()+beg, a.begin()+i); 26 svec.push_back(judge(t)); 27 while(a[i] == '5') 28 i++; 29 beg = i; 30 } 31 } 32 if(*(a.end()-1) != '5') 33 { 34 string t(a.begin()+beg, a.end()); 35 svec.push_back(judge(t)); 36 } 37 } 38 bool cmp(string a, string b) 39 { 40 int flag = true; 41 if(a.size() != b.size()) 42 return a.size()<b.size(); 43 else 44 return a<b; 45 } 46 47 void out(vector<string> s) 48 { 49 cout << s[0]; 50 for(int i = 1; i < s.size(); ++i) 51 cout << " " << s[i]; 52 cout << endl; 53 } 54 int main() 55 { 56 string a; 57 while(cin >> a) 58 { 59 vector<string> svec; 60 f(a, svec); 61 //out(svec); 62 sort(svec.begin(), svec.end(), cmp); 63 out(svec); 64 } 65 return 0; 66 }