寻找小水王
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找小水王相关的知识,希望对你有一定的参考价值。
1 #include<iostream> 2 using namespace std; 3 4 void Waterking_find(int ID[],int num) 5 { 6 int waterking[3]={0,0,0}; 7 int count[3]={0,0,0}; 8 for(int i=0;i<num;i++) 9 { 10 if(count[0]==0&&ID[i]!=waterking[1]&&ID[i]!=waterking[2]) 11 { 12 waterking[0]=ID[i]; 13 count[0]++; 14 } 15 if(count[1]==0&&ID[i]!=waterking[0]&&ID[i]!=waterking[2]) 16 { 17 waterking[1]=ID[i]; 18 count[1]++; 19 } 20 if(count[2]==0&&ID[i]!=waterking[0]&&ID[i]!=waterking[1]) 21 { 22 waterking[2]=ID[i]; 23 count[2]++; 24 } 25 if(ID[i]==waterking[0]) 26 { 27 count[0]++; 28 } 29 if(ID[i]==waterking[1]) 30 { 31 count[1]++; 32 } 33 if(ID[i]==waterking[2]) 34 { 35 count[2]++; 36 } 37 if(ID[i]!=waterking[0]&&ID[i]!=waterking[1]&&ID[i]!=waterking[1]) 38 { 39 count[0]--; 40 count[1]--; 41 count[2]--; 42 } 43 44 } 45 cout<<"这三个水王分别是:"<<waterking[0]<<" "<<waterking[1]<<" "<<waterking[2]<<endl; 46 } 47 int main() 48 { 49 int Num; 50 int ID[14]; 51 cout<<"请输入发帖子的数量:"<<endl; 52 cin>>Num; 53 cout<<"输入发送每个帖子的ID:"<<endl; 54 for(int i=0;i<Num;i++) 55 { 56 cin>>ID[i]; 57 } 58 Waterking_find(ID,Num); 59 return 0; 60 }
一、题目
随着论坛的发展,管理员发现“水王”没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了总和的1/4。你能从发帖列表中快速找到他们吗?
二、实验思路:
1、定义waterking[]来指定水王,count[]数组用来对三个水王的个数进行计数。
2、给出所有的ID数,先找出前三个不同的数本别设定为三个不同的小水王
3、继续向后遍历其他的数,若遇到其中的一个水王,则那个水王的count[i]+1,若遇到与三个水王都不同的数,三个水王的count[]—1,若其中的某个水王的count[]减为0时,将遍历到的数设置为新的水王,遍历到最后,找到三个小水王。
三、实验截图
四、实验总结:
我感觉这次实验和和上一次的思路基本相同,只是增加了水王的个数,但是我们就觉得难了很多,一开始就没有想出来。我觉得有些题目的思路是相通的,我们要耐心研读,找出解题的入口。
以上是关于寻找小水王的主要内容,如果未能解决你的问题,请参考以下文章