【慢慢学算法】:游船出租(浙大研究生复试题)

   题目描述:                                                                                               
    现有公园游船租赁处请你编写一个租船管理系统。当游客租船时,管理员输入船号并按下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
代码:
 1 #include<stdio.h>
 2 typedef struct node
 3 {
 4     int number;
 5     char c;
 6     char time[5];
 7 }node;
 8 
 9 node inode[1024];
10 int index = 0,
11     count = 0,
12     flag = 0;
13 float sum = 0;
14 
15 int GetTime(int a, int b)
16 {
17     char *s1 = inode[a].time;
18     char *s2 = inode[b].time;
19     int h,m;
20     m = (int)(*(s2+3) - *(s1+3))*10 + (int)(*(s2+4) - *(s1+4));
21     h = (int)(*s2 - *s1)*10 + (int)(*(s2+1) - *(s1+1));
22     return h*60 + m;
23 }
24 
25 void clear()
26 {
27     index = 0;
28     count = 0;
29     sum = 0;
30     flag = 0;
31 }
32 
33 int main()
34 {
35     while(scanf("%d", &inode[index].number) && inode[index].number != -1)
36     {
37     scanf(" %c%s",&inode[index].c,inode[index].time);
38     if(inode[index].number == 0)
39     {
40         if( sum == 0)
41         {
42         printf("0 0\n");
43         clear();
44         continue;
45         }
46         else
47         {
48         printf("%d %d\n",count, (int)(sum/(float)count + 0.5));
49         clear();
50         continue;
51         }
52     }
53     for(int i = 0; i < index; i++)
54     {
55         if(inode[i].number == inode[index].number)
56         if(inode[i].c == 'S' && inode[index].c == 'E')
57         {
58             count++;
59             sum += GetTime(i, index);
60         }
61     }
62     index++;
63     }
64     return 0;
65 }
原文地址:https://www.cnblogs.com/VortexPiggy/p/2493379.html