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


    一、题目

    三人行设计了一个灌水论坛。随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的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 }

    四、运行结果

    五、心得体会

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

  • 相关阅读:
    合并两个有序链表
    有效括号方法二
    有效括号
    es6 中的模块化
    XMLHttpRequest 对象
    AST
    php读写文件方式
    vue开发中遇到的问题
    sublime操作
    cmd命令
  • 原文地址:https://www.cnblogs.com/hanshidiguo/p/4460792.html
Copyright © 2020-2023  润新知