课堂练习----水王程序

一、题目要求

  三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

二、设计思想

  水王问题就是根据消消乐游戏的一个变形,消消乐是消除相同的图案,而找出水王则是删掉相邻的不同的ID,由于“水王”发帖数目超过了帖子数目的一半,这样剩下的ID一定是水王的ID。这样就满足了时间复杂度为O(n)的要求。

三、代码实现

 1 #include<iostream.h>
 2 void main()
 3 {
 4     int arr[10]={3,3,6,4,3,5,3,3,7,3};//假设的ID号
 5     int shuiwang = 0;
 6     int count=0;  //标记
 7     cout<<"假设有10个ID,分别为:";
 8     for(int i=0;i<10;i++)
 9     {
10         cout<<arr[i]<<"  ";
11         if(count == 0)
12         {
13             shuiwang = arr[i];
14             count = 1;
15         }
16         else
17         {
18             if(shuiwang == arr[i])
19                 count ++;
20             else
21                 count --;
22         }
23     }
24     cout<<endl<<"水王的ID是"<<shuiwang<<endl;
25 }

四、运行截图

五、实验总结

  在刚开始思考这个问题的时候,用了最笨的方法,就是先排序,由于“水王”发帖数目超过了帖子数目的一半,然后发现中间的ID一定是水王的ID,不过这样的时间复杂度最小是O(n+lg(n)),不满足老师的要求,所以只能一次遍历然后就找到水王的ID。在实现的过程中改了好多次,总是不太顺利,不过最终在同学的帮助下还是完成了!

时间: 2024-10-09 17:35:11

课堂练习----水王程序的相关文章

寻找水王程序二

题目: 在上一次的程序中 信息学院的论坛里面,有一大“水王”不见了.出现了三个小水王,每个人的发帖数都超过了1/4. 思路: 还是上次消除的思想,我定义了三个计数器和三个初始嫌疑水王,比较三个ID,如果不相同,就排除,如果相同,那么计数器加一.嫌疑水王ID都与其它水军ID进行消除最后剩下的就是三个水王. 代码: #include "iostream" using namespace std; typedef int Type; Type find(Type *shuiwang ,int

课堂Java小程序(加减乘除与验证码)

一.编写一个程序,用户输入两个数,求出其加减乘除,并用消息框 显示计算结果. 1.设计思想:从键盘输入两个数字和运算符,然后计算.将输入的数字及运算符由字符型转换为整型,再用if判断输入的运算符,根据运算符进行对应的+-*/运算,最后输出结果. 2.程序流程图: 3.Calculate.java 源程序代码: package demo; import javax.swing.JOptionPane;  // import class JOptionPane public class Calcul

寻找水王程序一

题目 : 信息学院的论坛里面,有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子.风闻该“水王”发帖数目超过了帖子总数的一半. 如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能怎么样找出这个传说中的Tango水王吗? 思路: 我开始想到的思路是: 可以假设帖子的第一个ID是次数最大的. 遍历下一个ID,如果跟第一个一样,就++,否则,遇到一个不是水王发的帖子,将这个帖子与水王发的一个帖子删掉,也就是--,如果 == 0,那么说明当前的候选不是水王,假设

课堂测试小程序

题目:随机数的四则运算 思路:取两个随机整数,将运算符号放在一个数组里,再取一个随机数,整除4,通过余数来选取预算符号.真分数的四则运算,要取四个随机整数,并进行大小判断,真分数的分母要大于其分子. 代码: #include<iostream>#include<time.h>using namespace std;void main(){    srand(time(NULL));    for (int i = 1; i <= 30; i++)    {        in

微信小程序的认识和开发适用性

来源:三节课课堂笔记 小程序认知 初识小程序. ? 目前微信小程序包括各类公众号接口的情况: ? 那么微信拥有的功能产品和对应的互联网产品有哪些: ? 小程序相当于AppStore应用分发市场: ? ? 张小龙对小程序的定义:用完即走.触手可及. 小程序有以下特点:安装包只有1024K大小,用户即用即搜(新的应用场景:直达服务). ???? 结合小程序的特点和新的应用场景,小程序会有哪些机会? 从APP照搬复制:各种开发门槛较低的查询类产品可能会大量复制过来,但照搬不是最好的思路. 别硬拼渠道:

关于水王的题目——找到出现次数大于/等于数组长度一半的数

关于水王的题目--找到出现次数大于/等于数组长度一半的数 1. 题目描述 一个长度为n的数组,里面有一些数出现的次数比较多.请找到出现次数大于数组长度一半的数.(水王1) 一个长度为n的数组,里面有一些数出现的次数比较多.请找到出现次数等于数组长度一半的数.(水王2) 2. 双变量法和三变量法 不管是水王1,还是水王2,解法的时间复杂度都是O(n). 对于水王1,我们用两个变量来解决:candidate and count,前者记录水王的候选者,后者次数他的绝对次数!注意,这里是绝对次数~下面我

「wxParser」小程序插件:想在小程序中快速部署富文本?这个插件让你一步搞定

上期,我们在<「微信同声传译」小程序插件:快速实现语音转文字.文本翻译.语音合成等能力>一文中介绍了「微信同声传译」小程序插件的意义.作用以及应用.而在此之前,我们还介绍过「腾讯地图」.「腾讯视频」.「医院 LBS 位置服务」插件,有兴趣了解的读者可以点击「微信极客WeGeek」公众号底部菜单「极客干货 - 小程序插件」了解. 今天我们为大家推荐的是一款富文本渲染插件「wxParser」,目前 wxParser 支持对一般的富文本内容包括标题.字体大小.对齐和列表等进行解析.同时也支持表格.代

进度条12

日期 十二周 博客量 3 代码 500 时间 课堂时间,周一下午15:00-15:30 周三下午15:00--16:00 总结 进行课堂水王程序完成,总结规划冲刺2

Day1_算法分析方法

课堂笔记: 程序执行效率影响因子: 输入:评估时使用最坏情况输入 输入大小:考虑n渐进∞ 机器执行效率: 忽略 两种排序算法比较 插入排序n2 归并排序nlgn 递归 技能1:评估多项式的时间级数θ 技能2:构建算法的循环不定式,并证明其正确性 引申思考 归并排序通过哪个关键步骤/方法使效率高于插入排序 编程训练 归并排(与逆序数有关,poj2299) 查找两个排序数组的中位数(leetcode) 习题(正确性证明): 阅读课程handout1&2(http://www.cs.dartmouth