“找出水王”分析报告
一、题目要求
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
二、设计思路
1、水王的发帖数超过所有人的一半,这个是个重要信息。
2、这个就和开心消消乐一样,一对一对的把不同的id消去,剩下的一定就是水王的id。
3、因为水王的id超过了发帖数目的一半,消掉水王id最多的情况就是一个水王的id消去一个不同的id,但因为条件1,所以最后剩下的也会是水王的id。
三、源代码
#include<iostream> using namespace std; void main() { int id[10],i; cout<<"请输入十个id:"<<endl; for(i=0;i<10;i++) { cin>>id[i]; } int shuiwang,num=0; for(i=0;i<10;i++) { if(num==0) { shuiwang=id[i]; num=1; //重新找一个id继续消 } else { if(shuiwang==id[i]) { num++; } else { num--; } } } cout<<"水王的id为:"<<shuiwang<<endl; }
四、运行结果
五、报告总结
这个程序告诉我们,玩游戏也不是没有好处的哈哈。一开始我还想着弄个计数的东西,id出现一次就计数一次,然后最后一比谁多就出来了,简单明了但是有点太麻烦。然后经过提醒就想到了这个思路。以后编写程序想办法解决问题的时候,也不能一味的走传统路线,也需要新颖创新的东西,多思考,或许就能和这个程序一样省去很多麻烦。