一、程序要求
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他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 | |
描述:程序设计问题,不知道该如何入手。 |
八、实验总结
见到题目之后,一开始根本就没有想法,经过课堂上和老师同学们讨论,发现了两两不同消除之后就是水王的。这次的算法也是主要考察时间的优化,知道了要消除,可是消除的条件还不是很明朗,通过老师的提醒,自己下课编写了算法和程序。对于这种优化算法的问题,还是应该多多练习。