课堂练习--找“水王”
2015-04-22 21:03
246 查看
一、题目要求
现有一个灌水论坛,信息学院的学生都喜欢在上面交流灌水。传说在论坛上有一个“水王”,它不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目已超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者ID在其中,请设计算法快速找到这个传说中的“水王”。
二、设计思路
本题要求时间复杂度是o(n),我们可以设置一个计数器flag,和一个变量shuiwang存放当前的ID,当flag为0时,将arry[i]赋给shuiwang,否则,比较i和i+1,相等flag+1,不等flag-1。
三、源代码
View Code
四、结果截图
五、实验心得
课堂上,老师让我们先从简单的方法开始,先排序中间的就是水王,而后,加大难度,我觉得这种思维正是我们在编程过程中应该具备的,先实现基本功能,再优化代码。然后说说这道题目,开始绞尽脑汁都没有想到,后来老师说可以采用“消消”的方法,恍然大悟...再实现时却不是那么回事,我发现面对不同的情况消得对象不同,比如“1,1,1,1,2,2,2”和“1,2,1,2,1,2,1”就不同,后来又跟小伙伴商量,探讨,查资料,才找到了分情况的办法,锻炼了我们的思维能力。
现有一个灌水论坛,信息学院的学生都喜欢在上面交流灌水。传说在论坛上有一个“水王”,它不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目已超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者ID在其中,请设计算法快速找到这个传说中的“水王”。
二、设计思路
本题要求时间复杂度是o(n),我们可以设置一个计数器flag,和一个变量shuiwang存放当前的ID,当flag为0时,将arry[i]赋给shuiwang,否则,比较i和i+1,相等flag+1,不等flag-1。
三、源代码
#include "stdio.h" #define N 1000 int main() { int arry ,shuiwang,flag,num,i; printf("请输入ID的个数:"); scanf("%d",&num); printf("请输入ID:\n"); for(i=0;i<num;i++) { scanf("%d",&arry[i]); } for(i=flag=0;i<num;i++) { if(flag==0) { shuiwang=arry[i],flag=1; } else { if(shuiwang==arry[i]) { flag++; } else { flag--; } } } printf("这个“水王”的ID就是:"); printf("%d\n",shuiwang); return 0; }
View Code
四、结果截图
五、实验心得
课堂上,老师让我们先从简单的方法开始,先排序中间的就是水王,而后,加大难度,我觉得这种思维正是我们在编程过程中应该具备的,先实现基本功能,再优化代码。然后说说这道题目,开始绞尽脑汁都没有想到,后来老师说可以采用“消消”的方法,恍然大悟...再实现时却不是那么回事,我发现面对不同的情况消得对象不同,比如“1,1,1,1,2,2,2”和“1,2,1,2,1,2,1”就不同,后来又跟小伙伴商量,探讨,查资料,才找到了分情况的办法,锻炼了我们的思维能力。
相关文章推荐
- CCNA课堂练习一:路由器链路备份功能
- 课堂练习-返回一个整数数组中最大子数组的和
- 课堂练习&课后作业
- 实验七(课堂练习)
- Android课程---添加黑名单的练习2(课堂讲解)
- CCNP课堂练习一:详解交换机vlan的介绍及通过交换机从逻辑上划分区域配置
- CCNP课堂练习四:frame-relay traffic-shaping(帧中继流量整形)
- 课堂练习 哈利波特
- 软件工程课堂练习——结队开发二
- CCNA课堂练习:控制访问列表(ACCESS LIST)
- 2015/4/14课堂练习
- 课堂练习之电梯调度
- 课堂小练习—电梯
- 软件工程课堂练习--找出“水王”
- 软件工程课堂练习——找出1-n中1出现的个数
- 上机练习题——接口课堂练习2:大学里的学生(Student)需要交学费,而研究生(Graduate)作为学生比较特殊,除了需要交学费外,还可以获取一部分科研津贴,由学校(University)统一发放
- 课堂练习-找水王
- 课堂代码练习补交
- 课堂练习之找水王
- Android课堂练习及答案Test1,2,3合辑