zoukankan      html  css  js  c++  java
  • 小水王

    题目要求:

          有3个发帖很多的ID,他们的 数目都超过了 总数目N的1/4。你能从 ID列表中快速找出他们的ID。

    设计思路:

          综合前一个超级水王综合来看,它们的共同之处就是水王帖子数与总数的关系,从这一关系入手,就有希望找到较为简单的算法。

          上一次的一个好做,这一次的三次同样寻找过程中不变还是设置计数并与0做比较。

          较为难做的是设初值的情况:我的办法就是先设一个水王,剩下的两个在按数组顺序的情况下最先出现与已知水王ID不同设为剩下的水王。

    具体实现:

    #include<iostream>
    #include<string>
    #define M 20
    using namespace std;
    
    void main()
    {
        int n, i, count[3] = {1,0,0};
        string ID[M], water[3];
        cout << "输入帖子总数:" << endl;
        cin >> n;
    
        cout << "按顺序依次输入ID:" << endl;
        for (i = 0; i < n; i++)
        {
            cin >> ID[i];
        }
    
        cout << "帖子表为:" << endl;
        cout << "序号" << '	' << "ID" << endl;
        for (i = 0; i < n; i++)
        {
            cout << i << '	' << ID[i] << endl;
        }
    
        //count[3] = { 1,0,0 };
        water[0] = ID[0];
        for (i = 0; i < n; i++)
        {
            if (count[1] == 0 && ID[i] != water[0] && ID[i] != water[2] )
            {
                count[1]++;
                water[1] = ID[i];
            }
            else if (count[2] == 0 && ID[i] != water[1] && ID[i] != water[0])
            {
                count[2]++;
                water[2] = ID[i];
            }
            else if (ID[i] == water[0])
                count[0]++;
            else if (ID[i] == water[1])
                count[1]++;
            else if (ID[i] == water[2])
                count[2]++;
            else if (ID[i] != water[0] && ID[i] != water[1] && ID[i] != water[2])
            {
                count[0]--;
                if (count[0] < 0) water[0] = ID[i];
                count[1]--;
                if (count[1] < 0) water[1] = ID[i];
                count[2]--;
                if (count[2] < 0) water[2] = ID[i];
            }            
        }
        cout << "三个小水王分别对应的ID为:" << endl;
        cout << water[0] << "" << water[1] << "" << water[2] << endl;
        
    }

    实验结果:

  • 相关阅读:
    Atlas+Keepalived系列一:安装Atlas:
    MySQL查看当前的连接信息
    MySQL replicate-ignore-db详解
    MongoDB 进程控制系列二:结束进程
    MongoDB 进程控制系列一:查看当前正在执行的进程
    MySQL 大致测试更新时间
    MySQL SELECT 执行的具体步骤
    MongoDB副本集配置系列七:MongoDB oplog详解
    MySQL 分区
    微软BI 之SSIS 系列
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/5579226.html
Copyright © 2011-2022 走看看