HDU-1106-排序

来源:互联网 发布:常用协议端口有多少 编辑:程序博客网 时间:2024/06/09 22:51
#include<iostream>#include<string>#include<queue>#include<map>#include<set>#include<vector>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;/*    我觉得这题如果能够更好的使用string函数库里的函数,想必会很简单;    所以说,掌握必要的函数是很有必要的;    s.substr(a,b)   表示在字符串s中从第a个数开始,截取b个字符;    s.find('5')     表示在字符串s中找到字符5,并返回5第一个5的下标,s.npos表示没有找到;*/string s;bool cmp(int x,int y){    return x<y;}int main(){    while(cin>>s){        int cnt=0;        int a[1005]={0};        while(s[0]=='5') s=s.substr(1,s.size()-1);  //  首先去除开头就是5的数字;        while(s.size()){            string temp;    //  定义字符串,用于存储每次截取下来的字符串;            if(s.find('5')!=s.npos) temp=s.substr(0,s.find('5')),s=s.substr(s.find('5'),s.size()-s.find('5'));  //  还有5的时候,截取第一个5前面的部分;            else temp=s,s="";   //  找不到5的时候,就只剩下这一串字符串;            while(s[0]=='5') s=s.substr(1,s.size()-1);  //  道理同21行,去除剩余s字符串开头的5;            for(int i=0;i<temp.size();i++) a[cnt]=a[cnt]*10+temp[i]-'0';    //  将截取下来的字符串转化成数字,存在数组中;            cnt++;        }        sort(a,a+cnt,cmp);  //  从小到大排序        for(int i=0;i<cnt-1;i++) printf("%d ",a[i]);        printf("%d\n",a[cnt-1]);    }    return 0;}


 

0 0
原创粉丝点击