zoukankan      html  css  js  c++  java
  • 找水王续

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

    设计思路:

    概要:三个小水王占总帖子数目的3/4以上,采用变形的二并法

    定义int shui3】,存储小水王,在定义int  num3】,记录三个小水王出现的次数,将帖子中前三个贴主赋值给shui[3],num3】初始为0For循环从第四个帖子开始循环,结束条件,所有的帖子都运算了一次。循环体:判断发帖人是否与shui[3]中相同,如果是,则对应的numi++,否则判断是否有numi】小于0,如果有,则将该发帖人赋值给shuii】,如果numi】中没有小于0的数,则所有的num3】都--,此时判断是否有numi】小于0,如果有,则将该发帖人赋值给shuii

    循环结束后,shui[3]中的值就是三个小水王。。

    代码实现:

     1 //陈昌  20143051 
     2 //2016/05/24 找水王续
     3 #include<iostream>
     4 #include<string>
     5 using namespace std;
     6 void main()
     7 {
     8     string shui[3];//存储水王
     9     int num[3];//记录嫌疑水王的出现的次数
    10     int NUM;
    11     cout<<"请输入:";
    12     cin>>NUM;
    13     string *tie = new string[NUM];//这部分用于从键盘中输入发帖人
    14     //string tie[12]={"a","a","a","a","b","b","b","b","c","c","c","c"};
    15     for(int i=0;i<NUM;i++)
    16     {
    17         cout<<"输入"<<i+1<<"号贴主名:";
    18         cin>>tie[i];
    19     }//这部分用于从键盘中输入发帖人
    20     
    21     for(int i=0;i<3;i++)//初始化
    22     {
    23         shui[i]=tie[i];
    24         num[i]=0;
    25     }
    26 
    27     for(int yi=3;yi<12;yi++)//运算
    28     {
    29         bool piPei=false;//用于判断是否下一个是否匹配
    30         for(int er=0;er<3;er++)//循环匹配判断
    31         {
    32             if(shui[er]==tie[yi])
    33             {
    34                 num[er]++;
    35                 piPei=true;
    36                 break;//匹配,停止循环
    37             }
    38         }
    39         if(!piPei)//匹配不成功
    40         {
    41             bool er=false;//只替换一个shui
    42             bool san=false;//用于判断是否有num【i】<0,有的话直接替换
    43             for(int liu=0;liu<3;liu++)
    44             {
    45                 if(num[liu]<0)
    46                     san=true;
    47             }
    48             if(!san)//没有num【i】<0,所有的num--
    49             {
    50                 for(int san =0;san<3;san++)
    51                     num[san]--;
    52             }
    53             for(int si=0;si<3;si++)
    54             {
    55                 if (num[si]<0&&er==false)//只替换一个shui
    56                 {
    57                     shui[si]=tie[yi];
    58                     num[si]=0;
    59                     er=true;
    60                 }
    61             }
    62         }
    63     }
    64     for(int wu=0;wu<3;wu++)//输出小水王
    65     {
    66         cout<<wu+1<<"号小水王:"<<shui[wu]<<endl;
    67     }
    68 }

    结果截图:

     

    个人总结:

      虽然一开始想到了主要的解题思路,而且也写出了设计思路,但是实际操作起来发现,然并卵,错了,此事并没有停下了整理思路,而是一个劲的寻找错误,到处设立断点,结果然并卵,自己看不下去;于是采用输出语句判断错误,经过一番周折,最终解决了,还是设计思路的问题。。。

  • 相关阅读:
    不同等级数据源的多级缓冲环的生成
    从DataTable到List<Model>(C#.net)
    string与char之间的转换以及如何获得string所占位数
    AndroidKotlin
    Android高级POS开发
    IOS 应用开发
    Android切屏的处理
    Android POS开发
    Android深入理解JNI
    Android的IPC机制Binder
  • 原文地址:https://www.cnblogs.com/cchjl/p/5530098.html
Copyright © 2011-2022 走看看