课堂练习-找水王
题目:
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
一、设计思想
刚开始设想的思路是先将其进行排序,由于水王出现的次数大于帖子数目的一半,所以在排序的中点处一定是水王。
后来在老师的提点下,感觉用消消乐的方法是个不错的选择,只不过我的方法是消去不同的两项,由于水王发帖数大于帖子总数的一半,所以消到最后剩下的一定是水王。
二、源代码
#include<iostream.h>
int main()
{
int j=0,k=0;
int a[10]={5,5,3,5,3,3,3,5,3,3};
k=a[0];
for(int i=0;i<10;i++)
{
if(k=a[i])
{
j-=1;
if(j<=0)
{
k=a[i+1];
j=1;
i++;
}
else
{
k=a[i];
j+=1;
}
}
}
cout<<"水王是:"<<k<<endl;
return 0;
}
三、运行结果截图
四、实验心得
通过这次实验,我了解到解决一个东西有很多办法,那得看题目要求,别人能认可、肯定的才是好的,尤其是老师的要求,增加了一定的难度,但也锻炼了我们,扩展了我们的思维,不是能做出来就好,代码短还能完美实现功能才是目标,也是老师说的优化