课堂练习-找水王(4.21)
2015-04-21 20:01
176 查看
题目:
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
一、设计思想
刚开始设想的思路是先将其进行排序,由于水王出现的次数大于帖子数目的一半,所以在排序的中点处一定是水王。
后来在老师的提点下,感觉用消消乐的方法是个不错的选择,只不过我的方法是消去不同的两项,由于水王发帖数大于帖子总数的一半,所以消到最后剩下的一定是水王。
二、源代码
三、实验结果截图
四、实验总结
本次实验让我深深体会到了解决办法的方式有很多,选择一种合适的很重要。在解决一个问题前,最重要的不是立刻去编写程序,而是要分析怎样解决这个问题才最快,最节省时间。一个好的思路,往往比你编程更重要。
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
一、设计思想
刚开始设想的思路是先将其进行排序,由于水王出现的次数大于帖子数目的一半,所以在排序的中点处一定是水王。
后来在老师的提点下,感觉用消消乐的方法是个不错的选择,只不过我的方法是消去不同的两项,由于水王发帖数大于帖子总数的一半,所以消到最后剩下的一定是水王。
二、源代码
#include<iostream.h> int main() { int i,j,k=1,shuiwang; int a[100]; cout<<"请输入id数:"; cin>>j; cout<<"请输入id:"; for(i=0;i<j;i++) { cin>>a[i]; } shuiwang=a[0]; for(i=1;i<j;i++) { if(shuiwang!=a[i]) { k=k-1; if(k<=0) { shuiwang=a[i+1]; k=1; i++; } } else { shuiwang=a[i]; k=k+1; } } cout<<"水王id为:"<<shuiwang<<endl; return 0; }
三、实验结果截图
四、实验总结
本次实验让我深深体会到了解决办法的方式有很多,选择一种合适的很重要。在解决一个问题前,最重要的不是立刻去编写程序,而是要分析怎样解决这个问题才最快,最节省时间。一个好的思路,往往比你编程更重要。