水王ID

题目:

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

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

一、设计思想

1、先将其进行排序,由于水王出现的次数大于帖子数目的一半,所以在排序的中点处一定是水王,但是时间复杂度太高。

2、消去不同的两项,由于水王发帖数大于帖子总数的一半,所以消到最后剩下的一定是水王。复杂度为n

二、源代码

#include<iostream.h>
int main()
{
    int n,m=1,water;
    int a[10]={3,4,2,2,5,5,6,2,2,2};
    water=a[0];
    for(n=1;n<10;n++)
	{
	   if(water!=a[n])
	   {
          m=m-1;
          if(m<=0)
		  {
            water=a[n+1];
            m=1;
            n++;
		  }
	   }
      else
	  {
		  water=a[n];
		  m=m+1;       

       }         

    }    

    cout<<"waterman‘s id is:"<<water<<endl;  

    return 0;

}

三、实验截图

四、实验总结

找到解决办法之后,先考虑一下时间复杂度的问题,然后再想最优解。

代码优化和重要,所以我们一定要深入思考,一个程序是否完美,时间复杂度是占很大比重。

时间: 2024-10-11 15:48:01

水王ID的相关文章

水王ID查找

一. 题目 1 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 2 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 3 要求将设计思想.代码实现.实现截图.个人总结以博文的形式发表. 二. 设计思想 因为水王ID超过一半,可将所有ID放入数组,若相邻的ID不同,则跳过,剩下的就是水王ID. 三.代码

课堂练习------寻找水王

•三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 1 #include<iostream.h> 2 int main() 3 { 4 int water; 5 int a[10]={1,5,2,5,3,5,4,5,5,5}; 6 int j,k=1

“找出水王”分析报告

“找出水王”分析报告 一.题目要求 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 二.设计思路 1.水王的发帖数超过所有人的一半,这个是个重要信息. 2.这个就和开心消消乐一样,一对一对的把不同的id消去,剩下的一定就是水王的id. 3.因为水王的i

找“水王”

题目: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半.如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 思路: 题目中提到水王的发帖数超过总数的一半,针对这一条件我们可以把第一个id赋值给一个变量利用循环使下一个id与之比较,相等令一个值(提前设好)+1不等-1,每次循环开始判断该值是否为0,为0则令

找出水王

一.题目: 现有一个灌水论坛,信息学院的学生都喜欢在上面交流灌水.传说在论坛上有一个“水王”,它不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目已超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者ID在其中,请设计算法快速找到这个传说中的“水王”. 二.设计思路 令水王id=0:当相同时count+1,不同时count-1.当count为0时,令水王id=a[i].由于水王的id超过一半,所以最后一定是水王的id. 三.代码 #include

编程之美----寻找发帖“水王”

题意:在一堆ID号中,有一个ID出现的次数大于总数的一半,如何快速找出那个ID. 我自己的想法是,如果ID号不是很大,用hash来存储每一个ID号出现的次数,出现一次,hash[ID]++,然后和max值比较,若大,则更新max值,复杂度为o(n). 书上一个好的解法是:每次删除两个不同的ID(不管是否包含“水王"的ID),那么在剩下的ID列表中,”水王“ID出现的次数仍然超过总数的一半,递归即可求解.复杂度为o(n). 1 int find(int ID[], int n) 2 { 3 int

找小水王

一.题目要求 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 二.设计思想 参考:http://www.cnblogs.com/sooner/archive/2013/04/02/2996589.html 由于大水王的代码,自己实现的不好,这次参考了别人的,但是还没弄透,明天再跟新,附自己理解后的代码!!!!! 三.代码实现 //mao2016.5.28 //找小水王 #include <iostr

小水王

#include "iostream" int main() { int length; int Idcou[3]={0,0,0};//计数器初始化为0 int ID[3]={0,0,0}; //水王id初始化为0 printf("请输入发帖的数量:"); scanf("%d",&length); int * shuiwang=new int [length]; printf("请输入所有发帖人的ID:"); for(

找水王续

1题目要求: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码) 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 2设计思路: 同上一个思路相