一、题目要求
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
二、设计思路
本次题目是在上次寻找“水王”的基础上进行拓展,设计思路和上次的相似,上次寻找水王是用的一个水王变量,一个计数变量,那么本次的设计思想沿用上次的技巧,有三个水军变量,三个计数变量;分别使水军的这三个变量和下一个数比较,然后和三个水军相对应的计数变量分别进行计数,相同则加一,不同则抵消减一;依次循环,和水王的规则类似,最后找到3个水军
三、程序代码
1 #include "stdafx.h" 2 3 void findshuijun(int arrID[],int num) 4 { 5 int shuijun1=0,shuijun2=0,shuijun3=0; 6 int x1=0,x2=0,x3=0; 7 for(int i=0;i<num;i++) 8 { 9 if(x1==0 && arrID[i]!=shuijun2 && arrID[i]!=shuijun3) 10 { 11 x1=1; 12 shuijun1=arrID[i]; 13 } 14 else if(x2==0 && arrID[i]!=shuijun1 && arrID[i]!=shuijun3) 15 { 16 x2=1; 17 shuijun2=arrID[i]; 18 } 19 else if(x3==0 && arrID[i]!=shuijun1 && arrID[i]!=shuijun2) 20 { 21 x3=1; 22 shuijun3=arrID[i]; 23 } 24 else if(arrID[i]!=shuijun1 && arrID[i]!=shuijun2 && arrID[i]!=shuijun3) 25 { 26 x1--; 27 x2--; 28 x3--; 29 } 30 else if(arrID[i]==shuijun1) 31 { 32 x1++; 33 } 34 else if(arrID[i]==shuijun2) 35 { 36 x2++; 37 } 38 else if(arrID[i]==shuijun3) 39 { 40 x3++; 41 } 42 } 43 printf("三个水军的ID分别是:%d、%d、%d\n",shuijun1,shuijun2,shuijun3); 44 45 } 46 47 48 49 int main(int argc, char* argv[]) 50 { 51 int arry[15]={110,110,111,112,113,111,111,112,110,110,112,112,111,113,114}; 52 findshuijun(arry,15); 53 return 0; 54 }
四、程序实现截图
五、体会
开始出来的结果不正确,经过调试才发现水军和计数变量没有初始化;这次实验是和同学一起讨论想到的,在设置变量的时候一开始遇到了困难,后来经过一点点的分析才最终解决。