课堂练习-找水桶(4.24)

题目:

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

一、设计思想

  课上老师一直强调与上次找水王的方法类似,虽然课上没能想出方法,但课下通过思考和观察找水王的程序,只需在原来基础上从一次消去两个,变为一次消去四个;三个水桶可以说是等价的,其数量均超过四分之一,所以一次消去四个后剩下的必然是三个水桶。需要变的只是从存一个水王到存三个水桶,变化方法与上次程序类似。因此只需对上次的程序复制粘贴,再稍稍修改一下即可。

二、源代码

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

三、结果截图

四、实验总结

  本次实验我学到的最多的就是要学会类推,当我掌握一种方法的时候,要学会运用它去解决一系列类似的问题。首先要找到两个问题的相同点,看能否做相类似的处理,在分析后,如果能,再找到它们的不同之处,针对不同之处做出相应的修改,问题应该就能解决。

 

转载于:https://www.cnblogs.com/gaoyang110/p/4458152.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值