一、程序要求

  三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。

  如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

二、程序设计思想

  题目中给出条件“该水王发帖数目超过了帖子数目的一半”,所以,可两两连续比较,若不一样,则第一个ID置0,向后进行;若一样,则该数的计数器加1,最后输出计数器最大的ID。

三、源程序代码

 1 //找水王,2016.5.20
 2 
 3 #include <iostream>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int a[100], count[50];
 9     int len, max = 0, flag;
10     cout << "请输入ID个数:" << endl;
11     cin >> len;
12     cout << "请输入所有帖子的ID:" << endl;
13     for (int i = 0; i<len; i++)
14     {
15         cin >> a[i];
16         count[a[i]] = 0;
17     }
18 
19     for (int j = 0; j<len - 1; j++)
20     {
21         if (a[j] == a[j + 1])
22         {
23             count[a[j]]++;
24             if (count[a[j]]>max)
25             {
26                 max = count[a[j]];
27                 flag = j;
28             }
29         }
30 
31         if (a[j] != a[j + 1])
32         {
33             a[j] = 0;
34         }
35     }
36 
37     cout << "水王的ID为:" << a[flag] << endl;
38     return 0;
39 }

四、运行结果截图

  

  

  

五、项目计划日志:

          周活动总结表

姓名:张莹荧                             日期:2016-05-20

日期/任务    听课     编写程序    阅读课本   准备考试                        日总计  
周一 100   30 120     250
周二   30 30 120     180
周三   180   180     360
周四 100 30    120     250
周五   30         30
周总结 200 270 60 540     1070

 

 

 

 

 

 

 

 

 

 

阶段时间和效率                      周数:12

不包括上一周在内的累计时间

总计 200 270 60 540       1070
平均 200 270 60 540     1070
最大 200 270 60 540     1070
最小 200  270 60 540     1070

 

 

 

 

 

以前各周的累计时间

总计 200 270 60 540       1070
平均 200 270 60 540     1070
最大 200 270 60 540     1070
最小 200 270 60 540     1070

 

 

 

 

 

六、时间记录日志:

  学生:张莹荧                 日期:2016-05-20

  教师:王建民                 课程: PSP  

日期 开始时间 结束时间 中断时间 净时间 活动 备注
5.16

14:00

15:50

10

100

上课

课间休息
5.17

10:00

10:30

0

30

编程  
5.18

14:30

17:40

10

180

编程

中间休息
5.19

12:30

14:00

13:00

15:50

0

10

30

100

编程

上课

 

 课间休息

5.20

11:00

11:30

0

30

编程

 

 

 

 

 

 

 

 

 

 

 

七、缺陷记录日志:

  学生: 张莹荧 

  日期: 2016-05-20 

  教员:  王建民     

  程序号:  12  

 日期  编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
 5.18  1 算法 编码 查资料、问同学 30min  
描述:程序设计问题,不知道该如何入手。

 

 
 
 
 
 

八、实验总结

  见到题目之后,一开始根本就没有想法,经过课堂上和老师同学们讨论,发现了两两不同消除之后就是水王的。这次的算法也是主要考察时间的优化,知道了要消除,可是消除的条件还不是很明朗,通过老师的提醒,自己下课编写了算法和程序。对于这种优化算法的问题,还是应该多多练习。