一、题目与设计思路
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有”水桶“,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻三个“水桶”发帖数目超过了帖子数目的1/4。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水桶吗?
(1)发帖者的id存储到一个一维数组。
(2)利用“消消乐”小游戏的思想,消除元素id不同的元素,最后剩下的便是“水桶”。
(3)扩展水王的思想,一个变3个。
(4)输出结果。
二、源代码
//作者:董龙洋 日期:2015.04.23
#include<iostream.h>
void main()
{
int Array[11];//发帖者ID
int i;//计数变量
int count[3];//次数
count[0]=count[1]=count[2]=0;
int st[3];///水桶
cout<<"**************寻找水桶的小程序****************"<<endl;
cout<<"输入发帖者id(11个,id用整数代替):"<<endl;
for(i=0;i<11;i++)
{
cin>>Array[i];
}
for(i=0;i<11;i++)
{
if(count[0]==0)
{
st[0]=Array[i];
count[0]=1;
}
else if(count[1]==0)
{
st[1]=Array[i];
count[1]=1;
}
else if(count[2]==0)
{
st[2]=Array[i];
count[2]=1;
}
else if(st[0]==Array[i])
{
count[0]++;
}
else if(st[1]==Array[i])
{
count[1]++;
}
else if(st[2]==Array[i])
{
count[2]++;
}
else
{
count[0]--;
count[1]--;
count[2]--;
}
}
cout<<"三个水桶的id是:"<<st[0]<<" "<<st[1]<<" "<<st[2]<<endl;
}
三、运行结果截图
四、心得体会
题目很简单,主要是怎样更加优化,是时间复杂度降低。借用水王的代码优化,那么消消乐的思想就很适用。编程实现就好了。