您的位置:首页 > 其它

找水王

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

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

  源代码:

//  2016/5/9,张晓菲,找水王问题
#include<iostream>
using namespace std;

#define N 100

int main()
{
int num;
cout<<"请输入帖子数:";
cin>>num;
while(num<=0)
{
cout<<"请重新输入帖子数:";
cin>>num;
}

int id
;
cout<<"请输入ID:";
for(int i=0;i<num;i++)
{
cin>>id[i];
}

int shuiwang=id[0];//定义shuiwang这个变量
int count;//用来计数
for(int j=0;j<num;j++)//从第一个ID开始遍历,如果第一个和第二个帖子ID相同,则count加1,不同则减1
{
if(shuiwang=id[j])
{
count=count+1;
}
else
count=count-1;
if (count<0)//如果count小于0,水王就等于下一个ID,然后再依次遍历
{
shuiwang = id[j];
}
}

cout<<"水王是:"<<shuiwang<<endl;
return 0;
}


  结果截图:





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

  缺陷记录日志:

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

  时间记录日志:

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

星期一

14:0015:5010(课间)100上课软件工程
5月17号

星期二

20:0022:000120编程大作业
5月18号

20:0022:000120编程找水王
5月19号

星期四

14:0015:5010100上机软件工程
5月20号

星期五

16:3017:300100整理博客、发博客找水王

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: