数组主元素(2013考研题)

数组主元素(2013考研题)
1.
【问题描述】
已知一个整数序列A长度为N其中若存在a且a的个数大于N/2则称为A的主元素
例如0 5 5 3 5 7 5 5 则为主元素 5
又如0 5 5 3 5 1 5 7则中没有主元素。
假设的元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出的主元素。若存在主元素则输出该元素否则输出-1。

【输入形式】
一个整数数组
【输出形式】
主元素
【样例输入】
0 5 5 3 5 7 5 5
【样例输出】
5
【样例说明】
长度为8,共有5个5。

#include <iostream>
#include<algorithm>
#include <cstdio>
using namespace std;
int main()
{
    int i=0,n=0,j,x,y;
    char a[100],ch;
    do//ch=getchar() != EOF && ch != '\n'
    {
        ch=getchar();
        if(ch!=' ')
        {
            a[i]=ch;
            //cout<<i<<" "<<a[i]<<endl;
            i++;
        }
    }while(ch!='\n'&&ch!=EOF);
    n=i-1;
    int b[n],c[n]={0},ma1,ma2,z;
    for(j=0;j<n;j++)
    {
        b[j]=a[j]-'0';
    }
    for(x=0;x<n;x++)
    {
        for(y=x;y<n;y++)
        {
            if(b[x]==b[y])
                c[x]++;
        }
    }
    ma1=c[0],ma2=0;
    for(j=0;j<n;j++)
    {
        if(c[j]>ma1)
        {
            ma1=c[j];
            ma2=j;
        }

    }
    //cout<<ma1<<" "<<b[ma2]<<endl;
    z=n/2;
    if(ma1>z)
        cout<<b[ma2];
    else
        cout<<-1;
    return 0;



}
发布了31 篇原创文章 · 获赞 8 · 访问量 2157

猜你喜欢

转载自blog.csdn.net/weixin_44034024/article/details/104660630
今日推荐