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

    一,题目说明

      随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,设计程序从发帖列表中快速找到他们。

    二,设计思路 

      与之前的求解内容极其相似,思路也差不多。只需要同时删除4个不同的ID后,剩余数据中3个多数ID就是所要找的ID。

      之前只需要一个结果,而现在需要3个结果,上次用到的nTimes,也应改为3个计数器。现在我们需要3个变量来记录当前遍历过的3个不同的ID,而nTimes的3个元素分别对应当前遍历过的3个ID出现的个数。如果遍历中有某个ID不同于这3个当前ID,我们就判断当前3个ID是否有某个的nTimes为0,如果有,那这个新遍历的ID就取而代之,并赋1为它的遍历数(即nTimes减1),如果当前3个ID的nTimes皆不为0,则3个ID的nTimes皆减去1。

    三,程序代码

    #include <iostream>
    
    using namespace std;
    
    int candidate[3];
    int count[3] = {0};
    
    int input[100];
    int num = 0;
    
    int main()
    {
        cout<<"please input"<<endl;
        int t;
        while(cin>>t)
        {
            if (t == -1)
                break;
            input[num++] = t;
        }
    
        bool flag = false;
    
        for (int i = 0;i < num;i++)
        {
            flag = false;
            for (int j = 0;j < 3;j++)
            {
                if (count[j] == 0)
                {
                    continue;
                }
                if (candidate[j] == input[i])
                {
                    count[j]++;
                    flag = true;
                }
            }
    
            if (flag == true)
            {
                continue;
            }
    
            for (int j = 0;j < 3;j++)
            {
                if (count[j] == 0)
                {
                    candidate[j] = input[i];
                    count[j]++;
                    flag = true;
                    break;
                }
            }
    
            if (flag == true)
            {
                continue;
            }
    
            for (int j = 0;j < 3;j++)
            {
                count[j]--;
            }
    
        }
    
        cout<<count[0]<<" "<<count[1]<<" "<<count[2]<<endl;
        cout<<candidate[0]<<" "<<candidate[1]<<" "<<candidate[2]<<endl;
    }
    

    四,运行截图

    五,个人总结:

    知一隅则三隅可举

  • 相关阅读:
    线程操作共享变量的一点分享。
    C调用栈重温
    8051汇编命令记录。
    没事写个散列玩~
    Ubuntu切换root用户权限
    CEdit自动换行和状态栏添加
    基于原始套接字的嗅探器
    Windows录音API学习笔记
    Windows内存管理
    C语言中tm结构体
  • 原文地址:https://www.cnblogs.com/420Rock/p/5535612.html
Copyright © 2011-2022 走看看