题目:从发帖的目录中徐找出发帖数过半的“水王”
思路:由于水王的发帖数是总数的一半,所以需要遍历一遍发帖目录。用一个变量代表一个ID出现相同的次数,若下一个ID与上一个ID不同,则变量减一,反之加一;最后若变量大于零,则对应得ID就是水王,其中在变量小于等于零时,ID会变化(下面代码中的s)
代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a[11]={"wshtl","乱清无","乱清无l","bingoing","乱清无","零夕","乱清无","主题远志","乱清无","wshtl ","乱清无"};
int k= 0;
int i;
string std;
for(i = 0; i < 11;i++)
{
if(k == 0)
{
std = a[i];
k= 1;
}
else
{
if(std == a[i])
{
k++;
}
else
{
k--;
}
}
}
cout<<"id的名单:"<<" ";
for(i = 0; i < 11;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"水王的ID是"<<" ";
cout<<std<<endl;
return 0;
}
截图:

总结:做这道题时,需要家主题的关键点“水王的发帖数是总数的一半以上”,并且我们需要摆脱之前的思路(遍历一遍,算出每一个ID的次数,最后比较大小求出水王)。换一个思路,并不是数出来,而是相消。