一.设计思路
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 << "序号" << ' ' << "ID" << endl; for (i = 0; i<n; i++) { cout << " " << X[i] << ' ' << 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; }
三.程序截图