课堂作业--寻找水军

一、题目要求

 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的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
",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 }

四、程序实现截图

五、体会

开始出来的结果不正确,经过调试才发现水军和计数变量没有初始化;这次实验是和同学一起讨论想到的,在设置变量的时候一开始遇到了困难,后来经过一点点的分析才最终解决。

原文地址:https://www.cnblogs.com/caomeina/p/4460778.html