• 九度OJ 1022:游船出租 (统计)


    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:3670

    解决:1444

    题目描述:
        现有公园游船租赁处请你编写一个租船管理系统。当游客租船时,管理员输入船号并按下S键,系统开始计时;当游客还船时,管理员输入船号并按下E键,系统结束计时。船号为不超过100的正整数。当管理员将0作为船号输入时,表示一天租船工作结束,系统应输出当天的游客租船次数和平均租船时间。
        注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有租船没有还船,或者只有还船没有租船的纪录,系统应能自动忽略这种无效纪录。
    输入:

        测试输入包含若干测试用例,每个测试用例为一整天的租船纪录,格式为:
        船号(1~100) 键值(S或E) 发生时间(小时:分钟)
        每一天的纪录保证按时间递增的顺序给出。当读到船号为-1时,全部输入结束,相应的结果不要输出。

    输出:
        对每个测试用例输出1行,即当天的游客租船次数和平均租船时间(以分钟为单位的精确到个位的整数时间)。
    样例输入:
    1 S 08:10
    2 S 08:35
    1 E 10:00
    2 E 13:16
    0 S 17:00
    0 S 17:00
    3 E 08:10
    1 S 08:20
    2 S 09:00
    1 E 09:20
    0 E 17:00
    -1
    样例输出:
    2 196
    0 0
    1 60
    来源:
    2007年浙江大学计算机及软件工程研究生机试真题

    思路:

    基础题,进行统计即可,用结构体格式会比较好。


    代码:

    #include <stdio.h>
     
    #define N 100
     
    typedef struct node {
        int state;
        int begin[2];
        int end[2];
    } REND;
     
    REND r[N+1];
     
    int count;
    int time[N+1];
     
    void init()
    {
        int i;
        for (i=1; i<=N; i++)
        {
            r[i].state = 0;
            time[i] = 0;
        }
        count = 0;
    }
     
    void input(int i)
    {
        char c[2];
        scanf("%s", c);
        if (c[0] == 'S')
        {
            scanf("%d:%d", &(r[i].begin[0]), &(r[i].begin[1]));
            r[i].state = 1;
        }
        else
        {
            scanf("%d:%d", &(r[i].end[0]), &(r[i].end[1]));
            if (i && r[i].state == 1)
            {
                time[count++] = (r[i].end[0]-r[i].begin[0])*60
                                + (r[i].end[1]-r[i].begin[1]);
            }
            r[i].state = 0;
        }
    }
     
    int main(void)
    {
        int i;
     
        while (scanf("%d", &i) != EOF)
        {
            if (i == -1)
                break;
     
            init();
     
            input(i);
            while (i != 0)
            {
                scanf("%d", &i);
                input(i);
            }
     
            if (count == 0)
            {
                printf("0 0
    ");
                continue;
            }
            double sum = 0;
            for (i=0; i<count; i++)
                sum += time[i];
            sum /= count;
            printf("%d %.0lf
    ", count, sum);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1022
        User: liangrx06
        Language: C
        Result: Accepted
        Time:0 ms
        Memory:916 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    webkit之滚动条美化
    意想不到的javascript
    html5 的存储
    javascript 中的number
    javascript 模板
    关于ajax的跨域
    一个菜鸟眼中的前端
    【转】python
    [转]修改python默认的编码方式
    搞科研
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5084009.html
Copyright © 2020-2023  润新知