zoukankan      html  css  js  c++  java
  • 九度OJ 1195:最长&最短文本 (搜索)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:3144

    解决:1156

    题目描述:

        输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。

    输入:

    输入包括多行字符串,字符串的长度len,(1<=len<=1000)。

    输出:

    按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。

    样例输入:
    hello
    she
    sorry
    he
    样例输出:
    he
    hello
    sorry
    来源:
    2008年华中科技大学计算机研究生机试真题

    思路:

    先搜索一遍,知道最短长度和最长长度,然后遍历输出。

    也可排序后输出。


    代码:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
    #define N 1000
     
    int cmp(const void *a, const void *b)
    {
        return strlen((char *)a) - strlen((char *)b);
    }
     
    int main(void)
    {
        int n;
        int i, j;
        char s[N][N+1];
     
        i = 0;
        while (scanf("%s", s[i]) != EOF)
            i++;
     
        n = i;
        qsort(s, n, sizeof(s[0]), cmp);
        for (i=1; i<n && strlen(s[i])==strlen(s[0]); i++) ;
        for (j=0; j<i; j++)
            printf("%s
    ", s[j]);
        if (strlen(s[0]) != strlen(s[n-1]))
        {
            for (i=n-2; i>=0 && strlen(s[i])==strlen(s[n-1]); i--) ;
            for (j=i+1; j<n; j++)
                printf("%s
    ", s[j]);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1195
        User: liangrx06
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:1820 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    详解 final 和 static
    详解 方法的覆盖 —— toString() 与 equals()的覆盖
    详解 继承(上)—— 工具的抽象与分层
    详解 继承(下)—— super关键字 与 多态
    Java 基础讲解
    矩阵 的实现
    C语言 贪吃蛇
    巨大数——三则运算(+、-、*)
    浅谈 循环数组
    人体对电流的反应
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083832.html
Copyright © 2011-2022 走看看