UNIN队设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
思路:删贴,水王发帖数目超过了帖子数目的一半,我们从列表头开始匹配,每匹配到一个不一样的就把俩帖子都删了,遇到一样的就删一个留一个。
#include<iostream> #include<string> #define N 10 //可以定义列表长度 using namespace std; int main() { string king; //定义列表 string IdList[N]={"2","3","1","3","1","1","7","1","2","3"}; //假设第一个id是水王 int i=0; int num=1; king=IdList[0]; for(i=1;i<N;i++) { //如果当前id和king id不同 if(IdList[i]!=king) { //num-1 num=num-1; //num为0,将下一个id 设为 king,并直接跳过下一次循环,并将 num设为1 //若num不为0,king 不变 if(num==0) { king=IdList[i+1]; i=i+1; num=1; } } //若id和king id相同,num+1 else { king=IdList[i]; num=num+1; } } cout<<"要找的水王的 id 为:"<<king<<endl; return 0; }
个人总结:遇到问题多思考,多动动脑子。