IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> HNUST:主元素 -> 正文阅读

[C++知识库]HNUST:主元素

题目描述

输入

输入由多组数据组成。
每组数据由二行组成,第一行是整数n(1<=n<=100000), 第二行是n个空格分开的整数,它们的值位于区间[0,1000000000]。
题目保证60%的数据n的值不超过20。

输出

每一组输入数据输出一行。如果存在满足条件的x,则输出,否则输出-1。

样例输入?Copy

3
3 2 3
8
0 5 5 3 5 7 5 5
8
0 5 5 3 5 1 5 7

样例输出?Copy

3
5
-1

?方法1(计数法)

#include <stdio.h>
#include <stdlib.h>
 
int main ()
{
    int n,i,m,f,s,t,max1,max2,k;
    while (scanf("%d",&n)!=EOF)
    {
        int a[100]={0};
        f=0;s=0;t=n;max1=0;k=n/2;
        while (t--)
        {
            scanf("%d",&m);
            if (m<=20&&m>=0)
            {
                a[m]++;
                if (a[m]>max1)
                {
                   max1=a[m];max2=m;
                }
            }
         }
        if (max1>k)
        {
            f=1;
            printf("%d\n",max2);
        }
        if (f==0) printf("-1\n");
    }
    return 0;
}

这种只有60%的正确率

方法2(抵消法)

?
#include <stdio.h>
#include <stdlib.h>
 
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--;// 处理不是候选主元素的情况
          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;//不存在主元素
}
 
void main()
{
    int s[100001],m,i;
    while (scanf("%d",&m)!=EOF)
    {
        for (i=0;i<m;i++)
        {
            scanf("%d",&s[i]);
        }
        printf("%d\n",Majority(s,m));
    }
}

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:30:33  更:2022-02-09 20:31:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:28:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码