找水王
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 | 整理博客、发博客 |
找水王 |
以上是关于找水王的主要内容,如果未能解决你的问题,请参考以下文章