题目:
信息学院的论坛里面,有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。风闻该“水王”发帖数目超过了帖子总数的一半。
如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能怎么样找出这个传说中的水王吗?
思路:
根据老师的思路,稍微改一下,每次删除两个不同的ID(不管是否包含水王的ID),那么,在剩下的ID列表中,水王ID出现的次数仍然超过总数的一半。可以通过不断重复这个过程,直到只剩下一个id。这就是水王的id。
代码:
#include<iostream>
using namespace std;
int find(int id[], int n)
{
int sw = 0;
int ntimes, i;
for (i = ntimes = 0; i < n; i++) {
if (ntimes == 0) {
sw = id[i];
ntimes = 1;
}
else {
if (sw == id[i])
ntimes++;
else
ntimes--;
}
}
return sw;
}
int main()
{
int i=0;
cout << "输入9个用户ID:";
int arr[9];
for (i = 0; i < 9; i++)
{
cin >> arr[i];
}
cout << "水王的id是:" <<find(arr, 9)<<endl;
system("pause");
return 0;
}
运行结果:

posted on
浙公网安备 33010602011771号