zoukankan      html  css  js  c++  java
  • HDOJ-1106

    排序

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


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

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

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

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

    本题要着重注意以下几种情况:

    (1)数字串中连续出现'5'的情况;

    (2)数字串末尾为'5'的情况; 

    (3)数字串首位为'5'的情况;

    第1,3种情况可以设一个变量ans来记录元素'5'前一个数字有没有被处理,进而判断是否为第一个或多个;第2种情况注意结尾为'5'时数字数与'5' 的个数相等就好。

    附AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 const int MAX=1010;
     8 char s[MAX];
     9 int b[MAX];
    10 
    11 int main(){
    12     while(~scanf("%s",&s)){//首先输入数字串 
    13         int m=0,ans=1;//ans用来记录在'5'前有没有非'5'数字被处理 
    14         memset(b,0,sizeof(b));
    15         for(int i=0;i<strlen(s);i++){
    16             if(s[i]=='5'){
    17                 
    18                 if(ans==0){//ans为0就表明'5'前有数字被处理,即'5'前不是'5' 
    19                 m++;
    20                 ans=1;
    21             }
    22             }
    23             
    24             else{
    25                 b[m]=(int)(s[i]-'0')+b[m]*10;
    26                 ans=0;
    27             }
    28         }
    29         if(s[strlen(s)-1]!='5'){//当最后一个数不是'5'时'5'的个数+1个数字 
    30             m++;
    31         }
    32         if(m==1){ //注意输出格式 
    33             printf("%d
    ",b[0]);
    34         }
    35         else{
    36             sort(b,b+m);
    37             printf("%d",b[0]);
    38             for(int i=1;i<m;i++){
    39                 printf(" %d",b[i]);
    40             }
    41             printf("
    ");
    42         }
    43     }
    44     return 0;
    45 } 
  • 相关阅读:
    [转]C# winform窗体(cs文件) .Designer.cs、.resx 文件分离出来 同级问题
    [转]C# winform窗体(cs文件) .Designer.cs、.resx 文件分离出来 同级问题
    C#中SqlDataAdapter的使用小结
    C#中SqlDataAdapter的使用小结
    C#如何以TEXTBOX控件中输入的内容查找数据库其他内容
    C#如何以TEXTBOX控件中输入的内容查找数据库其他内容
    Dock Fill
    Dock Fill
    C# winform 读取数据库并显示成datagrid
    C# winform 读取数据库并显示成datagrid
  • 原文地址:https://www.cnblogs.com/Kiven5197/p/5483420.html
Copyright © 2011-2022 走看看