• E


    输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。 

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

    Input输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。   

    输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。 
    Output对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。 
    Sample Input

    0051231232050775

    Sample Output

    0 77 12312320

    解法:
    在对字符串的处理上,我刚开始时是边读取边处理的方法,但要分析的情况比较多不好处理
    所以我后面是先读取一行字符串,保持到栈中,再从栈中一个个读取,
     1 #include <iostream>
     2 #include<stack>
     3 #include <algorithm>
     4 #include <string.h>
     5 using namespace std;
     6 
     7 const int MAX = 1000+500;
     8 
     9 int main()
    10 {
    11 
    12 
    13     stack<int>S;
    14     char temp[MAX];
    15 
    16 //   while(cin>>temp)
    17  //   S.push(temp - '0');
    18 
    19     while(cin>>temp)
    20     {
    21         int N = 0;
    22         long long a[MAX];
    23 
    24         int temp0;
    25         temp0 = strlen(temp);
    26         for(int i = 0;i<temp0;i++)
    27             S.push(temp[i]-'0');
    28         while(!S.empty())
    29         {
    30             int b[MAX];
    31             int Nb = 0;
    32             long long sum = 0;
    33             while(!S.empty())
    34        {
    35                 if(S.top() == 5)
    36             {
    37                  S.pop();
    38                         break;
    39             }
    40                 b[Nb++] = S.top();
    41          S.pop();
    42       }
    43             if(Nb != 0)
    44       {
    45                 for(int i = Nb-1;i>=0;i--)
    46                     sum = sum*10 + b[i];
    47                 a[N++] = sum;
    48       }
    49 
    50         }
    51 
    52         sort(a,a+N);
    53 
    54         cout<<a[0];
    55         for(int i = 1;i < N;i++)
    56             cout<<' '<<a[i];
    57         cout<<endl;
    58 
    59     }
    60 
    61 
    62 
    63 
    64     return 0;
    65 }

     

  • 相关阅读:
    html实体引用
    nginx配置奇怪问题记录
    20191025-生产事故记录
    abp审计日志功能的关闭
    mysql根据一张表更新另一张表数据
    redis-cli连接redis服务器操作
    错误记录-MySql.Data.MySqlClient.MySqlException (0x80004005): Timeout expired.
    UID,GID,口令
    【搬砖】/etc/passwd 文件结构
    《图形学》实验五:改进的Bresenham算法画直线
  • 原文地址:https://www.cnblogs.com/a2985812043/p/7224652.html
Copyright © 2020-2023  润新知