zoukankan      html  css  js  c++  java
  • 课堂练习——寻找水霸

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

    二,思路:(1)将所有的ID号从小到大进行排序,然后分别统计各个ID号的个数,找出其中出现次数超过1/4的ID号,即为所求,但时间复杂度过于复杂。

    (2)在思路一排序的基础上,三个水霸的ID号分别在1/4,1/2,3/4处。

    (3)在上一堂课寻找水王的基础上,寻找水霸即为消去连续的4个不同的ID。

    三,程序:

    #include <iostream.h>
    #include <conio.h>
    void intID(int length,int Arr[])

    {

    cout<<"输入发帖人的ID:"<<endl;

    for(int i=0;i<length;i++)

    {

    cin>>Arr[i];

    }

    }
    int main()
    {
    int length;//发帖人ID的个数
    int t[3]={0,0,0};
    int ID[3]={-1,-1,-1};
    cout<<"请输入帖子数量:";
    cin>>length;
    int * shuiba=new int [length];
    int jixu;
    intID(length,shuiba);
    for(int i=0;i<length;i++)
    {

    if(t[0]==0 && shuiba[i]!=ID[1] && shuiba[i]!=ID[2])
    {
    t[0]=1;
    ID[0]=shuiba[i];
    }
    else if(t[1]==0 && shuiba[i]!=ID[0] && shuiba[i]!=ID[2])
    {
    t[1]=1;
    ID[1]=shuiba[i];
    }
    else if(t[2]==0 && shuiba[i]!=ID[0] && shuiba[i]!=ID[1])
    {
    t[2]=1;
    ID[2]=shuiba[i];
    }

    else if(shuiba[i]!=ID[0] && shuiba[i]!=ID[1] && shuiba[i]!=ID[2])
    {
    t[0]--;
    t[1]--;
    t[2]--;
    }
    else if(shuiba[i]==ID[0])
    {
    t[0]++;
    }
    else if(shuiba[i]==ID[1])
    {
    t[1]++;
    }
    else if(shuiba[i]==ID[2])
    {
    t[2]++;
    }

    }
    cout<<"水霸的ID为:"<<ID[0]<<" "<<ID[1]<<" "<<ID[2]<<endl;
    cout<<endl;
    cout<<"要继续测试吗?(0,退出 1,继续)"<<endl;
    cin>>jixu;
    if(jixu==1)
    {
    cout<<endl;
    main();
    }
    else
    {
    return 0;
    }
    getch();
    return 0;
    }

    四,运行结果:

    五,总结:

    这道题目相对比较简单,有了前面课堂练习的基础能够解决类似问题。但题目并不是单纯地要求实现,而是要求我们运用算法来进行优化,减少程序运行时间,这就要求我们花费时间考虑更好的解决方法。找到对的解决方法才是解决这类问题的关键。

  • 相关阅读:
    依赖注入和控制反转概念及目的(新手必读)
    电商秒杀系统可能遇到的坑及思路
    Java中的ReentrantLock和synchronized两种锁定机制的对比
    Java集合---HashMap源码剖析
    Java中的字符串常量池
    redhat7:用户、组和权限
    redhat7下对用户账户的管理
    通过Tacker将NFV引入OpenStack
    github中的一个快捷键
    关于
  • 原文地址:https://www.cnblogs.com/xiaojin123/p/4463755.html
Copyright © 2011-2022 走看看