zoukankan      html  css  js  c++  java
  • 查找三个“水王”

    一.设计思路

      1.创建结构体M3Water,包含两个属性(“水王”ID、贴子数num);

      2.在主函数中读入文件列表,获取ID列表;

      3.调用查找函数,在查找函数中创建M3Water实例对象数组(包含三个元素),用来存储查找到的“水王”的信息,并初始化赋值,并将获取到的列表ID数赋值给CountAll;

      4.当三个实例对象中的num值为0时,存入一个ID列表中读取出的发贴人ID;

      5.当读取的ID列表中的发帖人ID与三个实例中的某个实例的“水王”ID相同时,该实例的num值加1;

      6.当读取的ID列表中的发帖人ID与三个实例中的“水王”ID均不相同时,三个实例中的num值均减1,CountAll减1;

      7.读取完所有的ID列表中的发贴人ID后,若三个实例中的num值与CountAll的比值均大于1/4,则该三个实例中的ID号即为所找的三个“水王”,否则不存在这样的三个“水王”。

    二.代码实现

      1 #include<iostream>
      2 #include<fstream>
      3 #include<string>
      4 #define N 1000
      5 using namespace std;
      6 
      7 struct M3Water{
      8     string ID;    //水王ID
      9     float num;    //水王发帖数
     10 };
     11 
     12 int Find(string IDnum[], int Num)
     13 {
     14     M3Water m3water[3];
     15     float CountAll=Num;    
     16     int Number;    //序号
     17     int member;    //水王序号
     18     for (member = 0; member < 3; member++)
     19     {
     20         m3water[member].num = 0;
     21         m3water[member].ID = "";
     22     }
     23     for (Number = 0; Number < Num; Number++)
     24     {
     25         if (m3water[0].num == 0)
     26         {
     27             m3water[0].ID = IDnum[Number];
     28             m3water[0].num++;
     29         }
     30         else if (m3water[1].num == 0)
     31         {
     32             m3water[1].ID = IDnum[Number];
     33             m3water[1].num++;
     34         }
     35         else if (m3water[2].num == 0)
     36         {
     37             m3water[2].ID = IDnum[Number];
     38             m3water[2].num++;
     39         }
     40         else if (m3water[0].ID == IDnum[Number])
     41         {
     42             m3water[0].num++;
     43         }
     44         else if (m3water[1].ID == IDnum[Number])
     45         {
     46             m3water[1].num++;
     47         }
     48         else if (m3water[2].ID == IDnum[Number])
     49         {
     50             m3water[2].num++;
     51         }
     52         else
     53         {
     54             m3water[0].num--;
     55             m3water[1].num--;
     56             m3water[2].num--;
     57             CountAll--;
     58 
     59         }
     60     }
     61     if (m3water[0].num/CountAll > 0.25 && m3water[1].num/CountAll > 0.25 && m3water[2].num/CountAll > 0.25)
     62     {
     63         cout << "三个水王为:"<<endl;
     64         for (member = 0; member < 3; member++)
     65         {
     66             cout << m3water[member].ID << "	";
     67         }
     68         cout << endl;
     69     }
     70     else
     71     {
     72         cout << "不存这样的三个水王(每个水王的贴子数超过1/4)!" << endl;
     73     }
     74     return 0;
     75 }
     76 
     77 int main()
     78 {
     79     int number[N];    //贴子序号
     80     string idnum[N];    //发帖人ID号
     81     int Num = 0;    //贴子数
     82     ifstream file;
     83     file.open("myfile.txt");
     84     if (!file)
     85     {
     86         cout << "文件不存在!"<<endl;
     87     }
     88     else
     89     {
     90         while (file >> number[Num] >> idnum[Num])
     91         {
     92             Num++;
     93         }
     94         if (Num == 0)
     95         {
     96             cout << "文件为空!" << endl;
     97         }
     98         else
     99         {
    100             if (Num < 12)
    101             {
    102                 cout << "不存在这样的三个水王(每个水王的贴子数超过1/4)!" << endl;
    103             }
    104             else
    105             {
    106                 Find(idnum,Num);
    107             }
    108         }
    109     }
    110     file.close();
    111     return 0;
    112 }

    三.测试结果

     1.测试数据一

     2.错误列表(不满足三水王要求)测试一

     3.错误列表(不满足三水王要求)测试二

    4.空文件测试

    四.个人总结

      在草稿纸上研究了半天,然后才想到这个规律,然后用到这个方法,但刚开始自己的代码太过复杂,时间复杂度较大,后来参考了别人的代码,然后纠正了过来。

  • 相关阅读:
    django查询今天,昨天,一周,分组统计月,年
    Rancher2.4.3 Rest API修改镜像地址
    Django-filter实现动态过滤与排序
    Python实现随机生成头像
    Python项目目录结构
    Django继承AbstractUser扩展字段
    Celery 监控方案
    Django项目配置快速启动
    Docker镜像分析工具dive
    Ddjango 多个app的urls配置
  • 原文地址:https://www.cnblogs.com/pengchengwanli/p/5534991.html
Copyright © 2011-2022 走看看