一、题目要求:
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
二、设计思想:
借助消消乐的思想,每次删除两个不同的ID,不管删除的ID是否包含“水王”,在剩下的ID中水王仍然占一半以上,就这样进行循环删除,删除到最后就得到结果了。
三、源代码:
#include "stdafx.h" #include<iostream.h> #include "stdlib.h" int curId=0; int count=0; void FindSW(int array[],int n) { for (int i=0;i<n;i++) { if (count==0) { count++; curId=array[i]; } else { if(curId==arr[i]) count++; else count--; } } } int main() { int n; int * arr=new int[n]; cout<<"请输入帖子总数:"; cin>>n; cout<<"请输入每个水军的ID:"<<endl; for(int i=0;i<n;i++) { cin>>arr[i]; } FindId(arr,n); cout<<"水王的ID是:"<<curId<<endl;; return 0; }
四、结果截图
五、实验总结:
拿到一个题目最重要的是你的编程思路,你要有自己的思想,就这个题吧,刚开始我们想的都很复杂,但是后来在老师的指引下我们想到了消消乐的玩法,这就给解题带来了很大的方便。