问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。

算法设计:对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。S有序。

#include <iostream>using namespace std;int largest=0; //众数的重数int element=0; //众数int hx_median(int *a,int &l,int &r) {//找中位数return a[(l+r)/2];}void hx_split(int *a,int med,int &l,int &r,int &l1,int &r1) {//用中位数将数组分为两段for(l1=0;l<=r;l1++) {if(a[l1]==med)break;}//找到第一个和中位数相等的数for(r1=l1+1;r1<=r;r1++) {if(a[r1]!=med) {r1--;break;}}//找到最后一个和中位数相等的数}void hx_mode(int *a,int l,int r) {int l1=0,r1=0;int med=hx_median(a, l, r);  //求中位数hx_split(a,med,l,r,l1,r1);if(largest<r1-l1+1) {largest=r1-l1+1;element=med;}//如果当前重数小于中位数的个数,则中位数的个数为新的重数if(l1-l>largest) {hx_mode(a,l,l1-1);}//如果左边的个数大于当前重数的个数,则众数可能在左边if(r-r1>largest) {hx_mode(a,r1+1,r);}//如果右边的个数大于当前重数的个数,则众数可能在右边}int main(int argc, const char * argv[]) {int n; //测试组数int m; //多重集S中元素的个数为mcin>>n;while(n--) {cin>>m;int S[m];for(int i=0;i<m;i++) {cin>>S[i];}hx_mode(S,0,m-1);cout<<element<<" "<<largest<<endl;}return 0;}

算法分析与设计:众数问题(C++,分治法)相关推荐

  1. 算法设计与分析之分治法

    文章目录 前言 一.分治法设计思想 二.分治法与递归 三.分治法的适用条件 四.时间复杂度分析 五.分治法设计步骤 六.分治法示例 总结 前言 大家好,我是一只勤勤恳恳的程序猿.本篇文章小猿将跟您分享 ...

  2. c语言分治法求众数重数_分治法求众数 - osc_twlari2q的个人空间 - OSCHINA - 中文开源技术交流社区...

    分治法求众数 Problem Description 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为 众数.例如,S={1,2,2,2,3,5}. ...

  3. 【算法设计与分析】-- 分治法

    1.分治法的基本思想 分治法的基本思想是将一个规模为n的问题分解为k个规模为较小的子问题,这些子问题互相独立且与原问题相同,递归地求解这些子问题,然后利用子问题的解合并出原问题的解. 2.分治算法的设 ...

  4. c语言分治法求众数重数_分治法实现众数问题--例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。...

    题目的描述: 例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 众数------一组元素中出现的次数是最多的 重 ...

  5. 算法设计与分析-《分治法》

    <分治法> 一.分治与递归 二.分治法适应条件与时间复杂度 三.快速幂算法 四.Strassen矩阵乘法 五.合并排序 一.分治与递归 分治的设计思想是: 将一个大问题,分割成一些规模比较 ...

  6. c语言分治法求众数重数_分治法求众数问题 (配图)

    标签: 采用分治法,以中间为界限, 先计算围绕中间这个数字的众数情况,然后左右分开递归计算结果,取最值即可. 左右递归计算的时候要先做判断,假如左边或是右边的个数都比已求的重数小,就没必要计算了,即使 ...

  7. 算法设计与分析之分治法——棋盘覆盖

    一:算法分析 棋盘覆盖问题要求在2^k * 2^k 个方格组成的棋盘中,你给定任意一个特殊点,用一种方案实现对除该特殊点的棋盘实现全覆盖. 建立模型如图:

  8. python众数问题给定含有n个元素的多重集合s_分治法求众数 给定含有n个元素的多重集合S 联合开发网 - pudn.com...

    分治法求众数 所属分类:数据结构 开发工具:C/C++ 文件大小:240KB 下载次数:3 上传日期:2018-01-04 20:19:09 上 传 者:九鼎 说明:  给定含有n个元素的多重集合S, ...

  9. 算法分析与设计——分治法最近点对

    分治法最近点对 分治法 分治法将一个难以直接解决的大问题划分成一些规模较小的子问题,分别求解各个子问题,再合并子问题的解得到原问题的解. 一般来说,分治法的求解过程由以下三个阶段组成: 划分:把规模为 ...

  10. 算法设计--众数和重数问题(分治法)

    问题描述: 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为众数.例如,S={1,2,2,2,3,5}.多重集S的众数是2,其重数为3.对于给定的n ...

最新文章

  1. 修改mysql的时间/时区
  2. 自动清理归档日志_Oracle重做日志和日志挖掘
  3. wxWidgets学习 (1) -- Hello World 详解
  4. JZOJ 5257. 小X的佛光
  5. HBase数据存取流程
  6. 清除html宏病毒,表格宏病毒怎么查杀 Excel宏病毒怎么清除?
  7. 华为oj题库分苹果JAVA_华为OJ机试训练(一)
  8. AutoCAD 2022 Mac中文版发布 最好的Mac CAD软件
  9. 怎么用dos系统进入服务器,怎么用DOS命令方式启动系统服务
  10. python爬取淘宝数据魔方_淘宝数据魔方看人群情况
  11. 屏蔽全部统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法...
  12. Android 小工具--圆形图片
  13. 仿照登录界面实现网站的注册
  14. 讯飞智能录音笔SR502内存升级,实力更强大
  15. cocos2dx-2.2.0孤狼优化整合版安装视频
  16. webpack 处理es6转es5需要使用babel-loader
  17. java备忘录模式_Java设计模式之备忘录模式
  18. laravel8实现图片验证码
  19. 学田岛电脑绣花制版新人上手教程之二
  20. 唯品会Java开发手册

热门文章

  1. android textview setellipsize,android中给TextView设置属性ellipsize
  2. H3C WAP712C 路由器设置
  3. 魅族 android 文件传输,魅族手机跟安卓设备如何实现wifi互传
  4. 三极管设计,理解饱和,线性区域和截止区
  5. Linux高可用集群方案之heartbeat基础原理及逻辑架构
  6. matlab灰度直方图均衡化_图像的灰度直方图、直方图均衡化、直方图规定化(匹配)
  7. NC文件数据提取完成(1.16)
  8. z3735 android5.1,『Sanghua的暴力美学』intel Z3735e 昂达V819i完全拆解。
  9. 【青梅快讯】不断前行,Greenplum发布最新版本 6.16.2
  10. neo4j ,neo4j-desktop国内下载镜像