2013年计算机联考真题——确定主元
来源:互联网 发布:c语言初级程序 编辑:程序博客网 时间:2024/06/06 03:56
思路:
首先把主元 确定为A[0],并计数cnt=1。之后从下标为1开始遍历数组,
1.如果A[i] == A[0],cnt++
2.如果不等,则如果cnt>0,cnt–,如果cnt<0,主元设定为A[i],cnt=1。
遍历结束后,再遍历一遍,确定主元的出现的次数,大于n/2,返回主元,否则返回-1
代码如下:
#include <iostream>using namespace std;int Majority(int* A, int n){ int majority = A[0]; int cnt = 1; for(int i = 1 ; i < n ; i++){ if(A[i] == majority){ cnt++; }else{ if(cnt > 0){ cnt--; }else{ majority = A[i]; cnt = 1; } } } cnt = 0; for(int i = 0 ; i < n ; i++){ if(A[i] == majority){ cnt++; } } if(cnt <= n/2){ majority = -1; } return majority;} void Print(int* A,int n){ for(int i = 0 ; i < n ; i++){ cout<<A[i]<<" "; } }int main(){ int A[8] = {0,5,5,3,5,7,5,5}; int B[8] = {0,5,5,3,5,1,5,7}; int majority = Majority(A,8); cout<<"数组A为:"<<endl; Print(A,8); if(majority == -1){ cout<<"数组A没有主元"<<endl; }else{ cout<<"数组A主元为:"<<majority<<endl; } cout<<"数组B为:"<<endl; Print(B,8); majority = Majority(B,8); if(majority == -1){ cout<<"数组B没有主元"<<endl; }else{ cout<<"数组B主元为:"<<majority<<endl; } return 0;}
截图为:
阅读全文
0 0
- 2013年计算机联考真题——确定主元
- 2010年计算机联考真题——一维数组循环左移
- 2011年计算机联考真题——寻找2个序列的中位数
- 2014年计算机联考真题——带权路径长度之和
- 2016年计算机联考真题——寻求最大子集和的差
- 396经济类联考数学真题分析
- 2009年计算机联考大纲--最新---计算机组成原理
- 2008年教育硕士联考心理学部分真题及答案及评析
- 2008年教育硕士联考教育学部分真题及答案
- 2014年1月MBA联考英语真题答案及解析:阅读
- 2009年统考计算机考研真题
- 2009年统考计算机考研真题
- 湖南大学 计算机 数据结构真题
- 校内联考——Contest First 题解
- 13.输入偏置均衡电阻——你确定你真需要这货?
- 1999年南京理工大学计算机考研真题答案(计算机组成原理)
- 深圳大学 考研真题 计算机 数据结构
- 中南大学 计算机 数据结构真题
- Kirinriki(HDU 6103)
- 用gcc3.4.5编译c++项目
- 在win7下配置Geany,使其使用 Python 3
- 极光推送
- 遍历已加载的驱动sys_魔域驱动
- 2013年计算机联考真题——确定主元
- 主席树-查询区间有多少个不同的数
- Angular2入门之模块与组件
- 【2017/8/11】Linux7 rsync+inotify实现服务器之间文件实时同步
- 举例说明EIP,EBP,ESP的作用
- Redis笔记20170811视频
- Java基础——Java语言基础1
- PHPStorm 常用快捷键大全
- 河南省多校连萌(三)【B-Bar ABCDEFGH 问题 E: QAQ & 君临天下 || 天行九歌】