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