- 输入n个数
- 若其中任何一个数出现次数大于总是的一半,则认为其是主元素
#include <iostream>
#define M 5
using namespace std;
int majority(int A[],int n){
int i,c,count=1; //c用来保存候选主元素,count用来对候选主元素计数
c=A[0];//设A[0]为候选
for(i=1;i<n;i++){
if(A[i]==c)
count++; //对A中的候选主元素计数
else{
if(count>0) count--; //处理不是候选主元素的情况,
//此时的count>0说明是第一次碰到
//count<0说明不是第一次碰到了,那就肯定不是主元素了,就要更换
else{ //更换主元素,重新计数
c=A[i];
count=1;
}
}
}
if(count>0){
for(i=count=0;i<n;i++) //统计候选主元素实际出现次数
if(A[i]=c) count++;
}
if(count>n/2) return c; //确认候选主元素
else return -1;
}
int main(){
int A[M],n;
for(int i=0;i<M;i++)
cin>>A[i];
printf("%d是主元素",majority(A,M));
return 0;
}