zoukankan      html  css  js  c++  java
  • (TOJ1292)排序

    描述

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

    输入

    输入数据包含多行,每行为一串数字(数字之间没有空格),这行数字的长度不大于1000。 
    输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。处理到文件结束为止。

    输出

    对每行数字串进行分割并从小到大排序,输出排序后的结果,相邻的两个整数之间用一个空格分开。

    样例输入

    50051
    0051231232050775

    样例输出

    0 1
    0 77 12312320
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <ctype.h>
     4 #include <math.h>
     5 
     6 char a[1001];
     7 __int64 b[1000];
     8 
     9  int split(__int64 a[], int low, int high)
    10  {
    11     __int64 part_element=a[low];
    12     for(;;){
    13     while(low<high&&part_element<=a[high])
    14       high--;
    15     if(low>=high) break;
    16     a[low++]=a[high];
    17   
    18     while(low<high&&a[low]<=part_element)
    19       low++;
    20     if(low>=high) break;
    21     a[high--]=a[low];
    22     }
    23     a[high]=part_element;
    24     return high;
    25  }
    26  void quicksort(__int64 a[],int low,int high)
    27  {
    28     int middle;
    29     if(low>=high)return;
    30     middle=split(a,low,high);
    31     quicksort(a,low,middle-1);
    32     quicksort(a,middle+1,high);
    33   }
    34 void deal(char *s)
    35 {
    36     int len,i,j,k,m,flag;
    37     __int64 t=0;
    38     len=strlen(s);
    39     i=j=k=flag=m=0;
    40     while(i<len){
    41         while(s[i]=='5') i++;
    42       j=i;
    43        while(j<len){
    44           if(s[j]!='5') j++;
    45           else  break;
    46        }
    47       for(k=i; k<j; k++)
    48       {
    49           
    50           t=t*10+(s[k]-48);
    51       }
    52       if(i<len) b[m++]=t;
    53       i=j;
    54       flag=0; t=0;
    55     }
    56     quicksort(b,0,m-1);
    57     printf("%I64d",b[0]);
    58     for(i=1; i<m; i++)
    59        printf(" %I64d",b[i]);
    60     printf("\n");
    61 }
    62 
    63 int main()
    64 {
    65     while(gets(a)){
    66         deal(a);
    67     }
    68     return 0;
    69 }
    70 
    71  
     
  • 相关阅读:
    C语言I博客作业03
    C语言I博客作业02
    JSON Template
    Mac系统登录不进系统解决办法
    Mac怎么安装并配置Homebrew?
    tensorflow 安装命令
    删除表重复数据
    redhat安装docker
    Rabbit MQ 入门指南
    Maven 集成Tomcat7插件
  • 原文地址:https://www.cnblogs.com/xueda120/p/3096091.html
Copyright © 2011-2022 走看看