zoukankan      html  css  js  c++  java
  • hdu 1106 排序

    排序

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 43204    Accepted Submission(s): 12372


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

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

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

    输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
     
    Output
    对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
     
    Sample Input
    0051231232050775
     
    Sample Output
    0 77 12312320
     
    Source
     
    Recommend
    Eddy   |   We have carefully selected several similar problems for you:  1236 1391 1029 1862 1209 
     
    字符串问题,分成一个个数字的时候要考虑一些特殊的数据,如连续出现两个5,开头是5,或者结尾是5等等特殊的情况。
     
    题意:中文题,很好理解。
     
    附上代码:
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 using namespace std;
     6 int main()
     7 {
     8     int i,j;
     9     char ch[1005];
    10     int a[1005];
    11     while(~scanf("%s",ch))
    12     {
    13         int len=strlen(ch);
    14         int m=0,n=0;
    15         for(i=0; i<len; i++)
    16         {
    17             if(ch[i]!='5')
    18                 m=m*10+ch[i]-'0';
    19             else
    20             {
    21                 if(ch[i-1]!='5'&&i!=0)  //不可以是连续出现的5,也不可以第一个数字是5
    22                 {
    23                     a[n++]=m;
    24                     m=0;
    25                 }
    26                 else
    27                     m=0;
    28             }
    29         }
    30         if(ch[len-1]!='5')  //判断最后一个数字是否是5,若不是,则需要存入数组
    31         {
    32             a[n]=m;
    33             sort(a,a+n+1);
    34             for(i=0; i<=n; i++)
    35             {
    36                 if(i!=0)
    37                     printf(" ");   //输出格式,最后一个数没有空行
    38                 printf("%d",a[i]);
    39             }
    40         }
    41         else     //最后一个数是5,则不需要考虑
    42         {
    43             sort(a,a+n);
    44             for(i=0; i<n; i++)
    45             {
    46                 if(i!=0)
    47                     printf(" ");
    48                 printf("%d",a[i]);
    49             }
    50         }
    51         printf("
    ");
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    大杂烩 -- 查找单向链表倒数第m个元素
    大杂烩 -- 单向链表是否存在环或是否相交
    大杂烩 -- 四种生成和解析XML文档的方法详解
    延伸 -- 泛型 -- 通配符的使用
    延伸 -- 泛型 -- 泛型的内部原理:类型擦除以及类型擦除带来的问题
    延伸 -- 泛型 -- 泛型的基本介绍和使用
    大杂烩 -- HashMap、HashTable、ConCurrentHashMap 联系与区别
    大杂烩 -- ArrayList的动态增长 源码分析
    Java -- 异常的捕获及处理 -- 自定义异常类
    Java字符串占位符(commons-text)替换(转载)
  • 原文地址:https://www.cnblogs.com/pshw/p/4817559.html
Copyright © 2011-2022 走看看