课堂练习之检测水军(拓展)

一、题目

三人行设计了一个灌水论坛。随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?

二、设计思路

上一次是找出一个水军,这个水军发帖数超过了总帖数一半,这一次是找三个水军,这三个水军每一个人的帖子数都超过了总帖数的1/4,我们只需要在上一次的基础上进行改进就可以了,上一次是挨着消去两个,这次挨着消去四个,剩下最后的三个就是水军。

三、源代码

 1 // shuitong.cpp : Defines the entry point for the console application.
 2 //韩雪东
 3 
 4 #include "stdafx.h"
 5 #include "iostream.h"
 6 int main(int argc, char* argv[])
 7 {
 8     
 9     int i,j=10,k=1,q=1,p=1,id1,id2,id3;
10     int a[10]={1,2,4,3,1,2,3,1,2,3};
11     id1=a[0];
12     id2=a[1];
13     id3=a[2];
14     for(i=3;i<j;i++)
15     {
16         if(id1!=a[i]&&id2!=a[i]&&id3!=a[i])
17         {
18             k=k-1;
19             q=q-1;
20             p=p-1;
21             if(k<=0&&q>0&&p>0)
22             {
23                 id1=a[i+1];
24                 k=1;
25                 i++;
26             }
27             else if(k>0&&q<=0&&p>0)
28             {
29                 id2=a[i+1];
30                 q=1;
31                 i++;
32             }
33             else if(k>0&&q>0&&p<=0)
34             {
35                 id3=a[i+1];
36                 p=1;
37                 i++;
38             }
39             else if(k<=0&&q<=0&&p>0)
40             {
41                 id1=a[i+1];
42                 k=1;
43                 id2=a[i+2];
44                 q=1;
45                 i=i+2;
46             }
47             else if(k<=0&&q>0&&p<=0)
48             {
49                 id1=a[i+1];
50                 k=1;
51                 id3=a[i+2];
52                 p=1;
53                 i=i+2;
54             }
55             else if(k>0&&q<=0&&p<=0)
56             {
57                 id2=a[i+1];
58                 q=1;
59                 id3=a[i+2];
60                 p=1;
61                 i=i+2;
62             }
63             else if(k<=0&&q<=0&&p<=0)
64             {
65                 id1=a[i+1];
66                 k=1;
67                 id2=a[i+2];
68                 q=1;
69                 id3=a[i+3];
70                 p=1;
71                 i=i+3;
72             }
73         }
74         else if(id1==a[i]&&id2!=a[i]&&id3!=a[i])
75         {
76             id1=a[i];
77             k=k+1;
78         }
79         else if(id1!=a[i]&&id2==a[i]&&id3!=a[i])
80         {
81             id2=a[i];
82             q=q+1;
83         }
84         else if(id1!=a[i]&&id2!=a[i]&&id3==a[i])
85         {
86             id3=a[i];
87             p=p+1;
88         }
89         
90     }
91     cout<<"水桶id分别为:"<<id1<<","<<id2<<","<<id3<<endl;
92     return 0;
93 }

四、运行结果

五、心得体会

既然老师出的题目和上一次有关联,就是在上一次的基础上进行了扩展,那么大致的方法还会和上一次大致相同,我们只要在上一次的基础上进行改进就好了。

posted @ 2015-04-27 17:34  韩东东  阅读(216)  评论(0编辑  收藏  举报