三个水王

一、题目

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

二、设计思路

    做过找一个水王的的题目,这次找的是三个水王。

    1、可以对帖子进行统计,数量最多的三个帖子为水王,但是这需要特别大的空间复杂度,不适用。

    2、既然三个水王都大于四分之一,那么,一次消掉4个不同的帖子,最后一定会剩下不同数量的三个水王的帖子,

三、源代码

 1 #include<iostream.h>
 2 int main()
 3 {
 4     int ID[10]={1,2,3,4,1,2,3,1,2,3};
 5     int ID_NULL;//定义一个不存在的ID
 6     int shui[3];
 7     int flag[3];
 8     int i;
 9     shui[0]=shui[1]=shui[2]=0;
10     flag[0]=flag[1]=flag[2]=ID_NULL;
11     for(i=0;i<10;i++)
12     {
13         if(ID[i]==flag[0])
14         {
15              shui[0]++;
16         }
17         else if(ID[i]==flag[1])
18         {
19              shui[1]++;
20         }
21         else if(ID[i]==flag[2])
22         {
23              shui[2]++;
24         }
25         else if(shui[0]==0)
26         {
27              shui[0]=1;
28              flag[0]=ID[i];
29         }
30         else if(shui[1]==0)
31         {
32              shui[1]=1;
33              flag[1]=ID[i];
34         }
35         else if(shui[2]==0)
36         {
37              shui[2]=1;
38              flag[2]=ID[i];
39         }
40         else
41         {
42              shui[0]--;
43              shui[1]--;
44              shui[2]--;
45          }
46     }
47     cout<<"小水王是:"<<endl;
48     cout<<flag[0]<<"  "<<flag[1]<<"  "<<flag[2]<<endl;
49     return 0;
50 }

四、实验截图
   

五、实验总结

    经过锻炼或者说老师的引导,这次的设计思路在课上就完成了,经过我和同学的讨论,他们都不认同我的,因为他们说不清楚怎么实现一次消除四个。我也是感到迷惑,初级的学习者在编写程序的时候大多数是建立在我们的能力基础上的,这是不可避免的。但是是不是也应该跳出我们是编程者去考虑一个思路呢。

转载于:https://www.cnblogs.com/bmbcbyc/p/4463946.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值