• zufeoj 数值排序(简单题)


    数值排序

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 186  解决: 45
    [提交][状态][讨论版]

    题目描述

    输入一串数字,把这串数字中的‘0’都看成空格,那么就得到一行用空格分割的若干非负整数(如果有三个或三个以上连续的‘0’,则第1个‘0’看成一个空格,第2个‘0’看成数值0,后面连续的0看成一个空格)。

    你的任务是对这些分割得到的整数依从大到小的顺序排序。

    输入

    输入文件中包含多个测试数据。每个测试数据为一串数字(数字之间没有空格,最前面的数字不为0)。测试数据保证:分割后得到的每个非负整数不会大于10000000000;分割后最多有10000个非负整数;最后一个数字不可能是0。

    测试数据一直到文件尾。

    请用字符处理。

    输出


    对输入文件中的每个测试数据,输出一行,是分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开。

    样例输入

    4500051231232050775
    111054300023980012980090000098765430001

    样例输出

    51231232 775 45 5 0
    9876543 2398 1298 543 111 9 1 0 0 0

     1 #include <iostream>
     2 #include <cstring>
     3 #include <string>
     4 #include <algorithm>
     5 #include <queue>
     6 using namespace std;
     7 priority_queue<long long>q;
     8 int main()
     9 {
    10     char a[505];
    11     while(cin>>a)
    12     {
    13         int l=strlen(a);
    14         long long k=0;
    15         int u=0;
    16         bool f=0;
    17         for(int i=0;i<l;i++)
    18         {
    19            if(a[i]!='0')
    20            {
    21                k=k*10+a[i]-'0';
    22                f=1;
    23                u=0;
    24            }
    25            else if(a[i]=='0'&&f==1)
    26            {
    27                q.push (k);
    28                k=0;
    29                f=0;
    30                u++;
    31            }
    32            else if(a[i]=='0'&&f==0&&u==2)
    33            {
    34                q.push (0);
    35                u++;
    36            }
    37            else if(a[i]=='0')
    38                u++;
    39         }
    40         q.push(k);
    41         while(!q.empty())
    42         {
    43             cout<<q.top();
    44             q.pop();
    45             if(q.empty ()) cout<<endl;
    46             else cout<<" ";
    47         }
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    多项式牛顿迭代
    小明A+B
    分拆素数和
    选课时间
    今年暑假不AC
    Lowest Common Multiple Plus
    大小写转换问题(java程序)
    VS 中输入带空格的两个字符串
    整除的尾数
    不要62
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13271151.html
Copyright © 2020-2023  润新知