• 小水王


    题目要求:

          有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;
        
    }

    实验结果:

  • 相关阅读:
    深入理解Linux系统调用:write/writev
    MySQL基础语法
    Ubuntu20.04安装MySQL8.0
    关系数据库(事务:一致性+隔离级别)
    基于mykernel 2.0编写一个操作系统内核
    信息安全 学习笔记(1)——常用攻击、网络命令、ARP安全、IP安全
    AI画风迁移——Style Change
    百度算法题回忆
    Java机试--输入输出
    【竞赛项目】阿里天池数据挖掘比赛——快来一起挖掘幸福感
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/5579226.html
Copyright © 2020-2023  润新知