zoukankan      html  css  js  c++  java
  • 九度OJ 1069:查找学生信息 (排序、查找)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:11240

    解决:3024

    题目描述:

     输入N个学生的信息,然后进行查询。

    输入:

     输入的第一行为N,即学生的个数(N<=1000)

    接下来的N行包括N个学生的信息,信息格式如下:
    01 李江 男 21
    02 刘唐 男 23
    03 张军 男 19
    04 王娜 女 19
    然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
    02
    03
    01
    04
    输出:

     输出M行,每行包括一个对应于查询的学生的信息。

    如果没有对应的学生信息,则输出“No Answer!”
    样例输入:
    4
    01 李江 男 21
    02 刘唐 男 23
    03 张军 男 19
    04 王娜 女 19
    5
    02
    03
    01
    04
    03
    样例输出:
    02 刘唐 男 23
    03 张军 男 19
    01 李江 男 21
    04 王娜 女 19
    03 张军 男 19
    来源:
    2003年清华大学计算机研究生机试真题

    思路:

    应该先排序,然后批量查找效率会比较高。

    我的代码是以前写的,多次直接查找效率不高,不推荐。


    代码:

    #include <stdio.h>
    #include <string.h>
     
    struct student {
        char num[10];
        char name[100];
        char sex[4];
        int age;
    };
     
    int main(void)
    {
        int n;
        struct student a[1000];
        int i, j;
        int m;
        char num[10];
        int index[10000];
     
        while (scanf("%d", &n) != EOF)
        {
            for (i=0; i<n; i++)
                scanf("%s%s%s%d", a[i].num, a[i].name, a[i].sex, &(a[i].age));
     
            //for (j=0; j<n; j++)
            //  printf("%s %s %s %d
    ", a[j].num, a[j].name, a[j].sex, a[j].age);
     
            scanf("%d", &m);
            for (i=0; i<m; i++)
            {
                scanf("%s", num);
                for (j=0; j<n; j++)
                {
                    if (strcmp(a[j].num, num) == 0)
                    {
                        index[i] = j;
                        break;
                    }
                }
                if (j==n)
                    index[i] = -1;
            }
     
            for (i=0; i<m; i++)
            {
                j = index[i];
                if (j == -1)
                    printf("No Answer!
    ");
                else
                    printf("%s %s %s %d
    ", a[j].num, a[j].name, a[j].sex, a[j].age);
            }
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1069
        User: liangrx06
        Language: C
        Result: Accepted
        Time:20 ms
        Memory:988 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    【C#学习笔记】 IDisposable 接口
    【C#学习笔记】 List.AddRange 方法
    Request a certificate from a certificate vendor
    How to install your SSL Certificate to your Windows Server
    How to generate a CSR in Microsoft IIS 7
    我爱你 肖厦
    OAuth2.0协议之新浪微博接口演示
    重写mouseEvent 事件 怎么实现自定义的无边框窗口移动
    原文地址:Qt数据库总结 作者:ImmenseeT
    QT+MySQL图片插入数据库并显示 2013-03-12 13:58:52
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083962.html
Copyright © 2011-2022 走看看