天天看點

找水王

一.設計思路

  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;

}      

三.程式截圖