题目:三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半,找到“水王”。
解题思路:默认第一个id为水王,遍历之后的id,若一样,水王不变,time加一;若不一样,time减一,若为0,水王更新,直到遍历结束。
代码:
#include<iostream> using namespace std; int findTheKingOfTheWater(int *id,int number) { int water; int time; for(int i = time = 0;i < number;i++) { if(time == 0) { water = id[i]; time = 1; } else { if(water == id[i]) { time++; } else { time--; } } } return water; } void main() { int id[11]={4,4,3,7,5,4,5,4,5,4,4}; cout << "水王为" << findTheKingOfTheWater(id,11) << endl; }
局限性:如果水王帖子没有超过一半则查找失败。