一.題目:
三人行設計了一個灌水論壇。資訊學院的學生都喜歡在上面交流灌水,傳說在論壇上有一個“水王”,他不但喜歡發帖,還會回複其他ID發的每個文章。坊間風聞該“水王”發帖數
目超過了文章數目的一半。 如果你有一張目前論壇的文章(包括回帖)清單,其中文章的作者的ID也在其中,你能快速的找到這個傳說中的水王嗎?
二.設計思路
a) 出發點“水王的發帖數目超過了文章數目的一半”,是以水王的名字至少會重複N/2,設定一個數num來記錄一個發帖人名稱的重複次數,num初始化為0;定義一個string shuiWang 來記住水王的名稱。
b) 當一個名稱與後一個名稱相同時,num++;不相同時,num--;當num為0時,将下一個名稱指派給shuiWang。
三.代碼實作
#include<iostream>
#include<string>
using namespace std;
void main()
{
int shuiNum;
cout<<"請輸入文章的數目:";
cin>>shuiNum;
//動态建立水貼數目的數組,用于存儲每個文章的發帖人
string *shui = new string[shuiNum];
//string shui;
cout<<"請輸入每個文章的發帖人姓名:"<<endl;
for(int i=0;i<shuiNum;i++)
{
cout<<i+1<<": ";
cin>>shui[i];
}
int num=0; //重複的次數
string shuiWang=shui[0]; //假定水王是第一個人
for(int i=0;i<shuiNum-1;i++)
{
if(shui[i]==shui[i+1])
num++;
else
{
if(num==0) //當num=0時,換人
shuiWang=shui[i+1];
else
num--;
}
}
cout<<"水王是:"<<shuiWang<<endl;
}
運作結果截圖: