zoukankan      html  css  js  c++  java
  • SDUSTOJ 1334

    题目

    Description
    把字符串按照ASCII码序的从小到大排列出来。
    串的ASCII码序遵循如下递归定义:
    1 两串的前n-1个字符相同,第n个字符ASCII码序小的排在前面;
    2 只有两串的字符完全相同时,才有两串相等。
    字符的ASCII码序比较可以用strcmp()函数完成。
    Input
    第一行输入为一个整数N(N<=50,000),后接N行,每行一个字符串,串长不超过100,000
    Output
    输出为N行,按照字符串的ASCII码序排列,ASCII码序小的排前面。
    Sample Input
    10
    abc
    bc
    aca
    ca
    c
    aac
    aba
    bc
    da
    ba
    Sample Output
    aac
    aba
    abc
    aca
    ba
    bc
    bc
    c
    ca
    da
    HINT
    用二维数组很难一次性分配出这么大的空间了,要用到根据输入变化的动态分配的内存才行。这里需要动态的数据结构,比如,字符指针的数组“char * s[]”,或者是二维的字符指针“char **s”,等等。

    AC代码

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define maxn 100000 + 100
    
    char str[maxn];
    int cmp(const void * a, const void * b);
    
    int main(){
        int n;
        while( ~scanf("%d", &n) ){
                getchar();
            char **tmp;
            tmp = (char **)malloc(sizeof(char *) * (n + 10));
            for(int i = 0; i < n; i++)
            {
                gets(str);
                int len = strlen(str) + 1;
                tmp[i] = (char *) malloc(sizeof(char) * (len + 10));
                strcpy(tmp[i], str);
                memset(str, 0, sizeof(str));
            }
            qsort(tmp, n, sizeof(char *), cmp);
            for(int i = 0; i < n; i++)
                puts(tmp[i]);
            free(tmp);
        }
        return 0;
    }
    
    int cmp(const void * a, const void * b)
    {
        return strcmp(*(char**)a, *(char**)b);
    }
  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740647.html
Copyright © 2011-2022 走看看