找水王

Posted 米奇充要条件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找水王相关的知识,希望对你有一定的参考价值。

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

  设计思路:根据题目,我们可以知道贴子数以及ID,还有最关键的一个信息是水王的帖子数超过了总帖子数的一半,所以我们就可以设一个变量count用来计数,先假设水王是第一个ID的人,从第一个帖子开始,如果 第二个帖子的ID和第一个帖子的ID相同,则count加1,如果不同,count就减1,最后如果count小于0,那么水王就变成下一个ID,如果大于0,就是第一个ID。这样遍历一遍,就能找到水王了。

  源代码:

 1 //  2016/5/9,张晓菲,找水王问题
 2 #include<iostream>
 3 using namespace std;
 4 
 5 #define N 100
 6 
 7 int main()
 8 {
 9     int num;
10     cout<<"请输入帖子数:";
11     cin>>num;
12     while(num<=0)
13     {
14         cout<<"请重新输入帖子数:";
15         cin>>num;
16     }
17 
18     int id[N];
19     cout<<"请输入ID:";
20     for(int i=0;i<num;i++)
21     {
22         cin>>id[i];
23     }
24 
25     int shuiwang=id[0];//定义shuiwang这个变量
26     int count;//用来计数
27     for(int j=0;j<num;j++)//从第一个ID开始遍历,如果第一个和第二个帖子ID相同,则count加1,不同则减1
28     {
29         if(shuiwang=id[j])
30         {
31             count=count+1;
32         }
33         else
34             count=count-1;
35      if (count<0)//如果count小于0,水王就等于下一个ID,然后再依次遍历
36         {
37             shuiwang = id[j];
38         }
39      }
40 
41     cout<<"水王是:"<<shuiwang<<endl;
42     return 0;
43 }

  结果截图:

  总结:刚拿到这个题目的时候一点思路也没有,后来听班里的大神讲思路,才知道原来可以这样写,知道了思路之后写着就快多了,其实一个题目最重要的就是思路了,没有思路什么也做不出来,所以,锻炼一个好的思维很重要。

  缺陷记录日志:

  缺陷是如果用户不小心将帖子数输入了字母,我的程序没办法进行出错处理。

  时间记录日志:

日期 开始时间 结束时间 中断时间(min) 净时间(min) 活动 备注

5月16号

星期一

14:00 15:50 10(课间) 100 上课 软件工程

5月17号

星期二

20:00 22:00 0 120 编程 大作业

 5月18号

20:00 22:00 0 120 编程 找水王

5月19号

星期四

14:00 15:50 10 100 上机 软件工程

5月20号

星期五

16:30 17:30 0 100 整理博客、发博客

 

找水王

  

以上是关于找水王的主要内容,如果未能解决你的问题,请参考以下文章

找水王

找水王2

找水王续

课堂练习-找水王

找水王2

课堂练习--找水王