递归求最值(分治递归)
输入n,再输入n个数,输出n个数中的最小值和最大值。
分治与递归!
代码:
#include<iostream>using namespace std; void minmax(int *a,int left,int right,int &min,int &max);int main(){int T; cin>>T; do {int *test,n,min,max; cin>>n; test = new int[n];for(int i = 0 ; i != n ; ++i) cin>>test[i]; minmax(test,0,n-1,min,max); cout<<"min="<<min<<endl; cout<<"max="<<max<<endl; }while(--T); system("pause");return 0; } void minmax(int *a,int left,int right,int &min,int &max){int lmin,lmax,rmin,rmax;if(left == right)//只有一个数 { min = a[left]; max = a[left]; }else {if(left == right - 1)//只有两个数 {if(a[left]<a[right]) { min = a[left]; max = a[right]; } else { min = a[right]; max = a[left]; } }else//多余两个数 {int m = (left +right)>>1;//二分中点 minmax(a,left,m,lmin,lmax);//递归求出左边的最小值最大值 minmax(a,m+1,right,rmin,rmax);//递归求出右边的最小值最大值 min = (lmin<rmin)? lmin:rmin;//比较得出最小值 max = (lmax>rmax)? lmax:rmax;//比较得出最大值 } } }
转载于:https://www.cnblogs.com/HpuAcmer/archive/2011/12/09/2281431.html
递归求最值(分治递归)相关推荐
- 蓝桥杯-递归求二项式系数值(java)
算法训练 6-1 递归求二项式系数值 时间限制:10.0s 内存限制:256.0MB问题描述样例输入一个满足题目要求的输入范例.3 10样例输出与上面的样例输入对应的输出.数据规模和约定输入数据中每一 ...
- 蓝桥杯 ALGO-150 算法训练 6-1 递归求二项式系数值 java版
问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在int表示时不会溢出. 简单的递归. impo ...
- 求π的值C++--递归求阶乘、浮点数精度控制技巧
[问题描述] 给定一个精度值e,用下列公式计算π的近似值,要求前后两次π的迭代之差的绝对值小于e,给出相应的最小迭代次 数n和最后一次计算的π的值. π/2=1+1!/3+2!/(3×5)+3!/(3 ...
- 算法训练 6-1 递归求二项式系数值
算法训练 6-1 递归求二项式系数值 问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在in ...
- 函数传参问题,桶排序去重,分治递归,摩尔投票求数组众数,数组中心下标求法
TIPS 1. 我们都知道,地址,指针这两者是完全等价的概念,但是有微小的差别.地址的话是不能够修改的(比如说数组名++就是违法的),而指针的话可以++与--. 2. 以后一旦在代码里面看到字符cha ...
- 顺序表应用7:最大子段和之分治递归法
Description 给定n(1<=n<=50000)个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最 ...
- c 最大子序列和_最大子序列和暴力法、分治+递归法、妙法
你好,我是goldsunC 让我们一起进步吧! 最大子序列和 Question:给定整数(可能有负数),求的最大值(为方便起见,如果所有整数均为负数,则最大子序列和为0). 示例: IN : [-2, ...
- 最大子段和之分治递归法
最大子段和之分治递归法 Time Limit: 10 ms Memory Limit: 400 KiB Problem Description 给定n(1<=n<=50000)个整数(可能 ...
- 递归、迭代、分治、回溯、动态规划、贪心算法
今天就简单来谈谈这几者之间的关联和区别 递归 一句话,我认为递归的本质就是将原问题拆分成具有相同性质的子问题. 递归的特点: 1.子问题拆分方程式,比如:f(n) = f(n-1) * n 2.终止条 ...
最新文章
- C语言,获得堆栈增长方向的一种方法
- Cpp 对象模型探索 / new 运算符内部调用过程分析
- 从晶体管特性曲线看饱和问题(Z)
- python后端将svc文件数据读入数据库具体实现
- 接口文档要写在概要设计里吗_写代码的五个步骤,你会几个?
- 3-2 :eq(index)过滤选择器
- phpstudy mysql升级5.7
- 寻找不到iframe元素
- qscoj:喵哈哈村的狼人杀大战(5)
- Http状态代码指示
- 2021年计算机保研记录 (中南,南理工,重大软,东华)
- 计算机图片颜色是红色怎么办,电脑变色是怎么回事?(有图片)
- 深度图像修复的回顾和改进:使用生成对抗网络基于Patch的图像修复
- Geek 设计师们疯狂的桌面
- gss1_GSS简介:网格样式表
- 安卓开发者的 17 年总结
- 解决Linux下部署使用JasperReport的项目的错误:net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体' i
- 【CTF系列】2021年2月四叶草CTF
- 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 8月14日
- 服务市场前端架构升级