题目:
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的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;
}
实验结果: