寻找水王02

题目:

       这次的题目是对第一次题目的一个扩展:随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了总的1/4,如何从发帖列表中快速找到他们?

程序设计思想:

      这次程序的思路和上次思路一致,不同的是这次需要三个计数器。

源代码:

#include <iostream>
#include <string>
using namespace std;
#define N 100
int main()
{
    int water_king[3];   //设置三个变量,用来记录ID号
    int ID[N], a ,b;
    int num = 0;
    int count[3] = { 0 };  //设置三个变量,用来计数,记录ID号出现的个数
    bool flag = false;
    cout << "请输入帖子的个数:" << endl;
    cin >> b;
    cout << "请输入ID:" << endl;
    while (cin >> a)     //输入数组 回车结束
    {
        ID[num++] = a;
        if (num > b)
        {
            cout << "输入ID数与帖子数目不匹配" << endl;
            return 0;
        }
        else 
        {
            if (getchar() == '
')  //换行停止
            {
                break;
            }
        }
        
    }
    for (int i = 0; i < num; i++)
    {
        flag = false;
        for (int j = 0; j < 3; j++)
        {
            if (count[j] == 0)
            {
                continue;
            }
            if (water_king[j] == ID[i])
            {
                count[j]++;
                flag = true;
            }
        }

        if (flag == true)
        {
            continue;
        }

        for (int j = 0; j < 3; j++)
        {
            if (count[j] == 0)
            {
                water_king[j] = ID[i];
                count[j]++;
                flag = true;
                break;
            }
        }

        if (flag == true)
        {
            continue;
        }

        for (int j = 0; j < 3; j++)
        {
            count[j]--;
        }

    }
    cout << "三个小水王ID 分别为: " << endl;
    cout << water_king[0] << " " << water_king[1] << " " << water_king[2] << endl;
}

结果截图:
当所输入的帖子数目与ID数不一致时

一致时找出水王

总结:虽然这次寻找水王的题目是在第一次的基础上进行的,设计思路也是来源于上次,但是这次的程序比上次的要复杂,因为三个“小水王”需要考虑的因素就要比第一个程序考虑的要多,需要要到三个计数器,在今后的编程中还是要多思考。

原文地址:https://www.cnblogs.com/me-tts/p/5569177.html