标签:
一、题目
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗
二、设计思路
上次是每次删除两个ID,即如果两个ID不同则删除,相同则保留,这次参考原来问题的解法,如果按照数序删除四个完全不同的ID,那么,最后剩下的就是原先发帖比例大于1/4的ID。循环这个过程,把ID总数降低,从而得到问题的答案。
三、源代码
#include<iostream.h>
int main()
{
int ID[10]={1,2,3,4,1,3,4,1,3,4};
int ID_NULL;//定义一个不存在的ID
int shui[3];
int flag[3];
int i;
shui[0]=shui[1]=shui[2]=0;
flag[0]=flag[1]=flag[2]=ID_NULL;
for(i=0;i<10;i++)
{
if(ID[i]==flag[0])
{
shui[0]++;
}
else if(ID[i]==flag[1])
{
shui[1]++;
}
else if(ID[i]==flag[2])
{
shui[2]++;
}
else if(shui[0]==0)
{
shui[0]=1;
flag[0]=ID[i];
}
else if(shui[1]==0)
{
shui[1]=1;
flag[1]=ID[i];
}
else if(shui[2]==0)
{
shui[2]=1;
flag[2]=ID[i];
}
else
{
shui[0]--;
shui[1]--;
shui[2]--;
}
}
cout<<"三个水王分别是:"<<endl;
cout<<flag[0]<<" "<<flag[1]<<" "<<flag[2]<<endl;
return 0;
}
四、结果截图
五、实验心得
我记得在课上的时候,FD就想出了这个思路,但是我们不知道怎么去实现,然后搜索了实现方法,找到了解决的办法,其实也就在在上次实验的基础上,虽然想法成立,但是实现起来,需要注意的细节颇多。
经验不能浪费,在做类似的题时应先想想原先的思路是否行得通,然后再去考虑别的方法,这样往往能节省不少时间。
标签:
原文地址:http://www.cnblogs.com/yue3475975/p/4470153.html