找“水王”

一、题目要求

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

     要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

二、设计思想

水王发表的帖子超过半数,也就是说,如果将一篇帖子与水王的帖子抵消,这样一篇一篇进行,水王的帖子最终一定会剩下。我们假设第一篇帖子是水王的,设置一个参数统计与这篇帖子相同的帖子的个数,然后查找下一篇,如果是水王的,相同数加一,如果不是水王的就减一。当相同书减到小于0的时候,就把当前的这篇帖子重新作为水王的帖子。依次循环直到检查完所有的帖子。

三、代码

#include<iostream>
using namespace std;
void main()
{

    int a[1000], n, same=0, id;
    cout << "请输入论坛所有ID的个数";
    cin >> n;
    cout << "请输入所有的ID序列";
    for (int i = 0; i<n; i++)
    {
        cin >> a[i];
    }
    id = a[0];
    for (int i = 0; i<n - 1; i++)
    {
        if (id == a[i + 1])
        {
            same += 1;
        }
        else
        {
            same -= 1;
        }
        if(same == -1)
        {
            i += 1;
            same = 0;
            id = a[i + 1];
        }
    }

    cout << "水王的ID是:" << id << endl;

}

 

四、截图

五、总结

 一开始得知题目时我非常奇怪,觉的看不懂老师的题目,但是后来经过了思考与同学的提醒,我理清了思路。在得到一道题的要求时,我们不一定会立马就懂得如何去做,主要还是要去思考,思考一个思路再写代码要比直接写更节省时间。

posted on 2015-06-22 14:17  fafalu  阅读(145)  评论(0编辑  收藏  举报

导航