找水王02

题目:

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

设计思想:

    通过对帖子列表进行遍历,统计水王帖子的数目是最简单的一种查找水王的方式,但是这种算法时间复杂度比较高。但是目前我只想到了这种有点low方法,老师上课讲的没太听明白。

程序概要设计:

    我的程序中首先假设列表中有40用户ID,逐个遍历,程序详细设计见源代码。

源代码如下:


//2016.5.27 王硕 20133099 找水王02
#include <iostream>
using namespace std;


void main()
{
 int i;
 int j=0;
 int count;
 int firstking=0;  
 int secondking=0;
 int thirdking=0;


 /*cout<<"三个小水王分别是: ";
 cout<<firstking<<"   "<<secondking<<"   "<<thirdking<<endl;
 cout<<endl;*/


 int news[40]={1,3,1,2,2,1,3,2,1,5,3,1,2,7,2,3,3,4,5,1,2,6,3,1,2,4,3,2,1,3,3,2,1,2,1,4,3,3,1,2};
 cout<<"帖子列表:"<<endl;
 for(i=0;i<40;i++)
 {
  cout<<news[i]<<"   ";
  if(i%8==7)
  {
   cout<<endl;
  }
 }
 cout<<endl;
 cout<<"找出的小水王:"<<endl;


 for(i=0;i<40;i++)
 {
  count=0;
  for(j=0;j<=40;j++)
  {
   if(news[i]==news[j])
   {
    count=count+1;
   }
  }
  if(count>=11)
  { 
   if(firstking==0)
   {
    firstking=news[i];
   }
   if(news[i] != firstking && secondking ==0)
   {
    secondking=news[i];
   }
   if(news[i] != firstking && news[i] != secondking)
   {
    thirdking=news[i];
    break;
   }
  } 
 }


 cout<<firstking<<"   "<<secondking<<"   "<<thirdking<<endl;
 cout<<endl;
}


 实验结果:

原文地址:https://www.cnblogs.com/WS1004/p/5535306.html