水王2

1.题目:

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

2.设计思路:

上一次是运用消消乐的逆向思想消去相邻的两个不同id,这次是寻找三个小水王,它们的id数都超过了总数的四分之一,这次就上次改进一下,把相邻id个数提高一下就可以得出结果。

3.源代码:

 1 #include<iostream.h>
 2 #include "stdlib.h"
 3 int main()
 4 {
 5     int length;
 6     int Idnum[3]={0,0,0};
 7     int ID[3]={0,0,0};      
 8     cout<<"请输入总帖子数量:"<<endl;
 9     cin>>length;
10     int * curId=new int [length];
11      cout<<"请输入水军的ID列表"<<endl;
12     for(int j=0;j<length;j++)
13     {
14         cin>>curId[j];
15     }
16     for(int i=0;i<length;i++)
17     {
18         if(Idnum[0]==0 && curId[i]!=ID[1] && curId[i]!=ID[2])
19         {
20             Idnum[0]=1;
21             ID[0]=curId[i];
22         }
23         else if(Idnum[1]==0 && curId[i]!=ID[0] && curId[i]!=ID[2])
24         {
25             Idnum[1]=1;
26             ID[1]=curId[i];
27         }
28         else if(Idnum[2]==0 && curId[i]!=ID[0] && curId[i]!=ID[1])
29         {
30             Idnum[2]=1;
31             ID[2]=curId[i];
32         }
33         else if(curId[i]!=ID[0] && curId[i]!=ID[1] && curId[i]!=ID[2])
34         {
35             Idnum[0]--;
36             Idnum[1]--;
37             Idnum[2]--;
38         }
39         else if(curId[i]==ID[0])
40         {
41             Idnum[0]++;
42         }
43         else if(curId[i]==ID[1])
44         {
45             Idnum[1]++;
46         }
47         else if(curId[i]==ID[2])
48         {
49             Idnum[2]++;
50         }       
51     }
52     cout<<"三个水桶ID为:"<<ID[0]<<" "<<ID[1]<<" "<<ID[2]<<endl;
53     return 0;
54 }

4.实验结果截图:

5.心得体会:

做了这么多次课堂小程序练习的延伸,每一次都是在第一个程序实现的基础上做改进就可以轻松搞定,相信这种思想在以后的程序编写中会发挥很大的作用吧。

原文地址:https://www.cnblogs.com/zhengt/p/4461312.html