天天看点

找水王

一.设计思路

  1.由于题设中给出条件“水王”的发贴数超过列表中总发贴数的一半,那么我们给每一个ID加一个权值,用来权衡它是否是水王

     2.如果ID相同,权值加1,不同则权值减1

     3.权值小于0时改变水王的身份。

二.程序代码

#include <iostream>
#include<string>
using namespace std;
#define N 100
int main() {
    int n, i, X[N];
    string ID[N], water;
    cout << "请输入帖子总数:" << endl;
    cin >> n;
    cout << "请输入帖子序号以及其相对应的ID:" << endl;
    for (i = 0; i<n; i++)
    {
        cin >> X[i];
        cin >> ID[i];
    }
    cout << "帖子表为:" << endl;
    cout << "序号" << '\t' << "ID" << endl;
    for (i = 0; i<n; i++)
    {
        cout << "\t" << X[i] << '\t' << ID[i] << endl;
    }

    //假设水王是第一个
    water = ID[0];
    int quanzhi = 0;
    for (i = 1; i<n; i++)
    {
        if (quanzhi >= 0)//如果权值大于0,对权值进行操作
        {
            //ID相同,权值增加
            if (water == ID[i])
                quanzhi++;
            //ID相同,权值减少
            else
            {
                quanzhi--;
            }
                
        }
        //如果权值小于0,改变水王的身份
        else
            water = ID[i];
    }

    cout << "水王就是:" << water << endl;

}      

三.程序截图