题目:

信息学院的论坛里面,有一大“水王”,他不但喜欢发贴,还会回复其他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 2016-05-19 15:06  呼噜~呼噜  阅读(146)  评论(0)    收藏  举报