一.设计思路
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;
}
三.程序截图