#include <stdio.h>
#include<iostream>
int func(int A[], int n)
{
int m = 0;
int k = 0;
int max = 0;
int* B = new int[n];
for (int i = 0; i < n; i++)//初始化B数组
B[i] = 0;
for (int j = 0; j < n; j++)
B[A[j] - 1]++;//用B数组的索引记录A的元素值,出现一个相同的,该索引就自增1
for (; k < n; k++)
if (B[k] > max)
{
max = B[k];
m = k;
}//去寻找可能的主元素
if (max > (n / 2))//判断是不是主元素
return m + 1;
else
return -1;
}
int main()
{
int A[] = { 1,2,2,2,2,4,5 };
int a = func(A, 7);
printf("%d ", a);
return 0;
}
一个序列如果有过半相同元素,则称为主元素。设计算法找出数组A(A1,A2........A(n-1))中的主元素。0<(A1,A2,.....A(n - 1))< n
最新推荐文章于 2024-05-20 20:08:58 发布