算法设计例题:主元素(随机算法)

memory limit: 5000KB    time limit: 1000MS

accept: 1    submit: 5

Description

设T[1:n]是一个含有n个元素的数组(集合)。当 | {i | T[i]=x} | > n/2 时,称元素x是数组T的主元素。

Input

第一行是一个正整数T,表示测试用例的个数。每个测试用例占两行,第一行是一个整数N( 0 < N < 100000 ),表示集合元素的个数,第二行是N个整数。

Output

为每个测试用例输出一行结果:如果该集合有主元素,输出该主元素,如果没有主元素,则输出 no 。

Sample Input

2
10
3 5 7 3 9 3 3 1 3 3
10
3 3 3 3 1 2 4 5 6 7

Sample Output

3
no

Author

John

解决方法:

#include<stdio.h>
#include<cstdlib>
#include<time.h>
#define N 200000
int x;
 int a[N];//这个不能放在main()函数中,局部变量的数组不能开太大,不然提交的时候会出现"Runtime Error!"

bool b(int a[],int n)
{
int i=rand()%n+1;//产生从1~n之间的整数
x=a[i];
int count=0;
for(int j=1;j<=n;j++)
if(a[j]==x)
count++;
return (count>n/2);
}

bool majority(int a[],int n)
{
if(b(a,n))
      return true;
else
 return b(a,n);
}

int main()
{
  srand((int)time(0));
  int n,k=0,testNum;

scanf("%d",&testNum);
  while(k!=testNum)
  { 
 scanf("%d",&n);
 for(int i=1;i<=n;i++)
 scanf("%d",&a[i]);
 if(majority(a,n))
 printf("%d\n",x);
 else
 printf("no\n");

k++;

}

return 0;
}

//特别注意的是,当换成c++的输入输出方式提交时会出现"Time Limit Exceed"的提示,当改成C的输入输出方式时就可以通过了,由此可见C的输入输出方式比C++的节省时间

主元素问题(随机算法)相关推荐

  1. 主元素问题—蒙特卡罗算法

    蒙特卡罗(Monte Carlo)方法介绍 蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法.传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实 ...

  2. 0049算法笔记——【随机化算法】蒙特卡罗算法,主元素问题,素数测试问题

    1.蒙特卡罗算法 基本概述        蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法.传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地 ...

  3. 随机算法 Las Vegas算法 Monte Carlo算法

    随机算法 定义 不要求对所有输入均正确计算,只要求出现错误的可能性小到可忽略(得能解决问题) 同一组输入,不要求同一个结果(不确定) 应用 有些使用确定性求解算法效率会很差的问题,如果用随机算法求解, ...

  4. 主元素问题(蒙特卡洛法和分治法)

    主元素问题描述 设T为一个有n个元素的数组,当T中某个元素x的个数大于n/2时,称x为T的主元素. 蒙特卡洛算法简介 蒙特卡洛算法(Monte Carlo),是一种不确定性化算法,并无法保证一定能够得 ...

  5. WC Day1 第一课堂 随机算法

    设数组含有 n n n 个不同元素,随即快速排序算法的期望比较次数 T ( n ) ≤ 2 n ln ⁡ n T(n) \leq 2 n\ln n T(n)≤2nlnn 证明 显然随机选取的枢轴元素是 ...

  6. 主元素问题 Majority Element

    2018-09-23 13:25:40 主元素问题是一个非常经典的问题,一般来说,主元素问题指的是数组中元素个数大于一半的数字,显然这个问题可以通过遍历计数解决,时间复杂度为O(n),空间复杂度为O( ...

  7. labuladong的算法小抄pdf_随机算法:水塘抽样算法

    读完本文,你可以去力扣拿下如下题目: 382.链表随机节点 398.随机数索引 -----------我最近在 LeetCode 上做到两道非常有意思的题目,382 和 398 题,关于水塘抽样算法( ...

  8. 浅浅地谈一下随机算法【poj2454】【poj3318】

    随机算法我也只是稍微接触了一下,就是想写篇博客自己稍微总结一下 其实随机算法也算是一个玄学吧,运气不好还是会wa.但是我们知道,计算机可以在短时间内计算大量的数据,所以碰到正确答案的概率还是挺大的. ...

  9. 权重随机算法的java实现

    一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...

最新文章

  1. Ubuntu 14.04 64bit上安装有道词典Linux版本
  2. PTA(BasicLevel)-1007素数对猜想
  3. mysql 普通索引使用方法,Mysql索引类型与基本用法实例分析
  4. 牛客 - Dress as women(sg定理+位运算)
  5. linux目录树(书本上看到)
  6. Android背景透明的 Dialog
  7. vcneter5.5添加域用户权限
  8. 【干货】大数据驱动的因果建模在滴滴的应用实践
  9. C语言基础练习(5)
  10. c语言不合法字符串常量,不合法的字符常量是什么
  11. aac mediarecorder录制_Android音视频录制之MediaRecorder+camera
  12. 闪耀在 UNIX 传奇往事中的启示, UNXI 见证者带你一览究竟
  13. 第一篇数模论文——估计出租车的总数
  14. 华为IoT首席架构师王启军:全栈工程师“养成记”
  15. android launcher 4x5应用排列,修改华为刷机包桌面应用图标布局排序的方法
  16. Codeup——577 | 问题 C: 等腰梯形
  17. 再创佳绩|Google Play 2020 年度中国开发者最佳榜单!
  18. Elastic安全分析新利器 —— Event Query Language (EQL) 介绍
  19. ERROR send and transfer are only available for objects of type address payable , not address
  20. 华为od统一考试B卷【最少面试官数】Python 实现

热门文章

  1. window和python查看和调用exe的对照,结合pyqt5应用查找指定程序,并结束应用程序(酒馆战棋整活必备)
  2. 程序运行时对应的内存分布(BSS段、数据段、代码段、堆、栈)关系
  3. fm算法详解_FM算法解析
  4. 安卓android模拟器上网设置
  5. 桥田QT-650快换盘在FDS热熔自攻螺接工艺中的应用
  6. C语言一维数据中2[arry]问题
  7. nginx 反向代理报400错误
  8. Leo支招:高层跳槽,三宜三忌
  9. Mac电脑设置语音详细度的方法
  10. 【EMC专题】静电放电抗扰度测试