• 算法设计与分析C++ 第三章: 递归与分治策略(附众数与重数 非分治实现等算法)


    直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。

    递归需要有边界条件、递归前进段和递归返回段。 当边界条件不满足时,递归前进; 当边界条件满足时,递归返回。

    分治的基本思想

    在这里插入图片描述

    汉诺塔

    汉诺塔大整数实现

    众数与重数 非分治实现

    总时间限制: 1000ms 内存限制: 1000kB
    描述
    给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的n个自然数组成的多重集S,计算S的众数及其重数 。

    输入
    输入集合大小n及n个数
    输出
    输出两行
    第一行为众数
    第二行为重数
    样例输入
    6
    1 2 2 2 3 5
    样例输出
    2
    3

    #include<iostream>
    using namespace std;
    int main() 
    {
    	int i,j,n,same,max=-1;
    	
    	//输入
    	int a[5000],b[5000];
    	cin>>n;
    	for(i=0;i<n;i++){
    		cin>>a[i];
    	}
    	
    		
    	for(i=0;i<n;i++){
    		b[i]=0;
    	}
    
    
    	//记录个数
    	for(i=0;i<n;i++){
    		for(j=0;j<n;j++){
    			if(a[i]==a[j])
    				b[i]  ;
    		}	
    	}
    	
    	for(i=0;i<n;i++)
    	{
    		if(b[i]>max){
    			max=b[i];
    			same=a[i];
    		}
    			
    		if(b[i]==max)
    		{
    			if(a[i]<a[max]){
    				max=b[i];
    				same=a[i];
    			}		
    		} 
    	}
    	cout<<same<<" "<<max;
    	
    	return 0;
    } 
    
    
  • 相关阅读:
    一行命令搞定node.js 版本升级
    doesn't contain a valid partition table 解决方法
    debian kill 进程等命令
    FastDFS配置说明(中英文)
    FastDFS问题汇总
    FastDFS常见命令
    FastDFS安装配置手册
    windows 与Linux 互传文件
    FtpClient中文乱码问题解决
    windows 配置host
  • 原文地址:https://www.cnblogs.com/ZCWang/p/12507476.html
Copyright © 2020-2023  润新知