题目大意:用5去分割输入的一串数,然后将分割后的数按照升序进行排列。
解题思路:本打算找一道排序的题的,结果果然是排序题。汗.......好多细节的地方,一直WA,用string来存数串,进行遍历,若不是5,就转化为要存入的数,注意*10,若是5且不在首位、末尾和不是连续的5,则写入优先队列进行排序输出。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1106
code:
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
using namespace std;
string num;
bool flag;
int sum;
int main()
{
priority_queue<int,vector<int>,greater<int> > q;
while(cin>>num){
for(int i=0;i<num.size();i++){
if(num[i]=='5'){
if(i!=0 && i!=num.size()-1 && num[i-1]!='5'){
q.push(sum);
sum=0;flag=0;
}
}
else{
sum=(num[i]-'0')+sum*10;
flag=1;
}
}
if(flag)
q.push(sum);
while(!q.empty() && q.size()>1){
cout<<q.top()<<' ';
q.pop();
}
cout<<q.top()<<endl;
q.pop();
sum=0;
}
return 0;
}