zoukankan      html  css  js  c++  java
  • 寻找水王问题

    题目:

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

    思路:

    开始的时候我想了一个特别偏的方法,因为题目中有一句话是每个帖子里面都有水王回复楼层,所以在帖子里面寻找出现id次数最多的那就是水王,但是这样下来的话工作量特别的大,不仅是每个帖子之间要比较而且每个帖子之内还是要比较,后来同学们提供了那个思路,我觉得比我的更简化,所以我才用了他的思路,我简单介绍一下这个思路吧,水王发帖数目超过了所有帖子数目的一半,每次从列表中删除两个不同的ID,那么剩下的ID里面,水王的ID出现次数仍然超过剩余数目的一半,因此每次删除两个不同的ID,直到剩下的所有ID都相同,那么剩下的就是水王的ID。这个思路确实挺简单的。

    代码。

    #include<iostream>
    using namespace std;

    int find(int* p, int n)
    {
        int a = 0,b=0;
        for (int i = 0; i < n; ++i)
        {
            if (a == 0 || b == 0)
            {
                a = p[i];
                b++;
            }
            else if (p[i] == a)
                b++;
            else
                b--;
        }
        return a;
    }
    int main()
    {
        int i = 0, n, m[100];
        cout << "输入帖子数目:";
        cin >> n;
        cout << "输入所有帖子ID:";
        for (i = 0; i < n; i++)
        {
            cin >> m[i];
        }
        int k = find(m, n);
        cout << "水王的ID是:"<<k<<endl;
        return 0;
    }

    好的想法要借鉴,也要有自己的想法,即使是错的也是有意义的。

  • 相关阅读:
    delphi Form属性设置 设置可实现窗体无最大化,并且不能拖大拖小
    学习 TTreeView [1]
    学习 TTreeView [3]
    学习官方示例
    踩方格(找规律 递推)
    踩方格(找规律 递推)
    普及组2008NOIP 排座椅(贪心+排序)
    普及组2008NOIP 排座椅(贪心+排序)
    POJ_3740 Easy Finding ——精确覆盖问题,DLX模版
    POJ_3740 Easy Finding ——精确覆盖问题,DLX模版
  • 原文地址:https://www.cnblogs.com/jump/p/4536509.html
Copyright © 2011-2022 走看看