欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HDU 1106 排序

程序员文章站 2022-05-01 14:27:14
...

HDU 1106 排序
注意三种特殊情况即可。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s[1005];
    while(scanf("%s",s)!=EOF)
    {
        int len=strlen(s);
        int ans=0;int num[1005];
        int flag=1;
        memset(num,0,sizeof(num));
        for(int i=0;i<len;i++)
        {
            if(s[i]=='5'&&i==0)//1.处理开头是5 的情况
                continue;
            else if(s[i]=='5'&&i!=0)
            {
                if(s[i-1]!='5'){//2.处理中间是一堆5的情况
                    ans++;
                    flag=1;
                }
            }
            else
            {
                if(flag==1)
                {
                    num[ans]+=(s[i]-'0');
                    flag=0;
                }
                else
                    num[ans]=num[ans]*10+(s[i]-'0');
            }
        }
        if(s[len-1]!='5')//3.处理末尾是5 的情况
            ans++;
        sort(num,num+ans);
        for(int i=0;i<ans-1;i++)
            printf("%d ",num[i]);
        printf("%d\n",num[ans-1]);
    }
    return 0;
}