简单:28:出现次数超过一半的数

28:出现次数超过一半的数

#include<iostream>
using namespace std;
int n,a[1001];
int maj(int c)
{
	int i,count=1;
	for (i=c+1;i<=n;i++)
	{
		if (a[i]==a[c])count++;
		else count--;
		if (count==0)
			break;
	}
	if (count>0)return c;
	else return maj(i+1);
}
int main()
{
	int i,candi,count=0;
	cin>>n;
	for (i=1;i<=n;i++)
		cin>>a[i];
	candi=maj(1);
	for (i=1;i<=n;i++)
		if (a[i]==a[candi])
			count++;
	if (count>(n/2))
		cout<<a[candi]<<endl;
	else cout<<"no"<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/always_ease/article/details/80751820