zoukankan      html  css  js  c++  java
  • 课堂练习-找水桶(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 }

    三、结果截图

    四、实验总结

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

  • 相关阅读:
    第六次作业--结对编程第二次
    OneZero第四周第三次站立会议(2016.4.13)
    结对编程体会2
    OneZero第四周第二次站立会议(2016.4.12)
    关于“单元测试工具”
    OneZero第四周第一次站立会议(2016.4.11)
    OneZero第四周——预完成功能点统计
    OneZero第三周第五次站立会议(2016.4.8)
    OneZero第三周第四次站立会议(2016.4.7)
    OneZero第三周第三次站立会议(2016.4.6)
  • 原文地址:https://www.cnblogs.com/gaoyang110/p/4458152.html
Copyright © 2011-2022 走看看