c语言用分治法求最大最小值,C语言实现分治法实例
本文为大家分享了C语言实现分治法实例代码,供大家参考,具体内容如下
使用分治法求最大值
这个函数将数组a[l]...a[r]分成a[l],...,a[m]和a[m+1],...a[r]两部分,分别求出每一部分的最大元素(递归地),并返回较大的那一个作为整个数组的最大元素.如果数组大小是偶数,则两部分大小相等;如果是奇数,第一部分比第二部分的大小大1.
#include
#include
#include
#include
using namespace std;
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE 0
typedef int Status;
int Max(int a[], int l, int r)
{
int u, v, m = (l + r) / 2;
//当区间中只有一个元素,递归终止,并将该元素返回
if(l == r)
return a[l];
//递归原区域的左边
u = Max(a, l, m);
//递归原区域的右边
v = Max(a, m+1, r);
//返回最大值
return (u>v)?u:v;
}
int main()
{
//举例验证
int a[7] = {6, 5, 3, 4, 7, 2, 1};
int maxx = Max(a, 0, 6);
printf("%d\n", maxx);
return 0;
}
汉诺塔的解
我们把盘子(递归地)移动到c上的方案是,将除了最下面的盘子之外的所有盘子移到b上,然后将做下面的盘子移到c上,然后(递归地)再将其他盘子移回到最下面的盘子上面.
#include
#include
#include
#include
using namespace std;
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE 0
typedef int Status;
//输出盘子的移动
void shift(int n, char x, char y)
{
printf("Move %d disk: %c ---------> %c\n", n, x, y);
}
void hanoi(int n, char a, char b, char c)
{
//递归终止的条件
if(n == 1)
{
//将a上最下面的盘子移到c上
shift(n, a, c);
return;
}
//以c为中间轴,将a上的盘子移动到b上
hanoi(n-1, a, c, b);
shift(n, a, c);
//以a为中间轴,将b上的盘子移动到c上
hanoi(n-1, b, a, c);
}
int main()
{
//举例验证
hanoi(4, 'a', 'b', 'c');
return 0;
}
使用分治法在尺子上画刻度
要在尺子上画刻度线,我们首先在左半边画刻度线,然后在中间画一条最长的刻度线,最后在右半边画刻度线.
#include
#include
#include
#include
using namespace std;
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE 0
typedef int Status;
//画线
void mark(int m, int h)
{
//由于无法实际表示刻度线之间的高度差,故用实际数字来体现
printf("%d ", h);
}
//划分该区域内的刻度
void rule(int l, int r, int h)
{
//找到该区域的中间
int m = (l + r) / 2;
//当高度大于0
if(h)
{
//划分小区域
rule(l, m, h-1);
//画线
mark(m, h);
//划分小区域
rule(m+1, r, h-1);
}
}
int main()
{
//举例验证
rule(0, 14, 4);
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
c语言用分治法求最大最小值,C语言实现分治法实例相关推荐
- c语言坐标海伦公式,C语言:用海伦公式求三角形面积 , C语言编程问题,利用海伦公式求三角形面积...
导航:网站首页 > C语言:用海伦公式求三角形面积 , C语言编程问题,利用海伦公式求三角形面积 C语言:用海伦公式求三角形面积 , C语言编程问题,利用海伦公式求三角形面积 匿名网友: 程序已 ...
- 求最大值最小值c语言指针,用C语言指针如何求最大值最小值
问题描述:用C语言指针如何求最大值最小值 以下使一个简单的例子,用来说明指向函数的指针变量.定义两个函数max和min,分别用来求最大值和最小值.在主函数中根据用户输入的数字是1或者是2,使指针变量指 ...
- C语言小白初试 7-1 求一元二次方程的根 (20 分)
7-1 求一元二次方程的根 (20 分) 本题目要求一元二次方程的根,结果保留2位小数. 输入格式: 输入在一行中给出3个浮点系数a.b.c,中间用空格分开. 输出格式: 根据系数情况,输出不同结果: ...
- C语言程序设计输入x求函数y,C语言程序设计实践(OJ)-初识函数
2964: 查闰年 Description 大家知道如何判断某一年是否是闰年吗?这个问题可难坏了小编,小编在写一个查找m年到n年之间闰年的程序,却苦于判断闰年的函数不会写,据说 今天你有上机课,我就拿 ...
- c语言程序设计循环结构求奇数和,C语言程序设计实验报告循环结构程序设计.doc...
C语言程序设计实验报告循环结构程序设计 C语言实验报告 课程__C程序设计_实验名称_循环结构程序设计__第 页 共 页 系 别__电气工程______________________ 实 验 日 期 ...
- c语言用循环函数求平方,用C语言程序三种循环语句分别编写程序,求1-100的平方值?...
C语言用for语句求1~100中是3的倍数的所有整数之和,提供两种解法如下: 第一种:这是比较经典的方法: #include int main(){int sum=0;for(int i=1;i 由热 ...
- 分治算法求最大最小值c语言,[蓝桥杯][算法提高VIP]和最大子序列 (C语言代码)分治法...
解题思路: 注意事项: 参考代码:#include #include #include #include #include #include using namespace std; const in ...
- c++分治法求最大最小值实现_程序员:算法导论,分治法、归并排序,伪代码和Java实现...
分治法 我们首先先介绍分治法.分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后在合并这些子问题的解来解决原问题的解. 还是拿扑克牌举例子,假设桌上有两堆牌面朝 ...
- c++分治法求最大最小值实现_你所不了解的分治算法
本文通过讲解3个基本问题的应用,提供了分治算法设计范式的实践.第一个例子是对数组中的逆序对进行计数的算法(第3.2节).这个问题与测量两个有序列表的相似性有关,适用于根据自己的知识向其他人按照他们的偏 ...
- c++分治法求最大最小值实现_快速实现分组统计,均数标准差 中位数(四分位数间距) 最大值 最小值,非常全...
我们做统计分析的时候,变量统计描述结果的整理是非常头疼的事,变量少的时候,整理的工作量还能承受,一旦变量比较多或者需要多次更新数据,就会非常耗时耗力. 之前我们也多次介绍相应的包,详情可查看专辑< ...
最新文章
- 数组中只出现一次的数字
- 社团管理信息系统C语言,学生社团信息管理系统.doc
- Maven项目整合提示:Maven Missing artifact xxx:jar 错误解决方案
- java unit test怎么写_Java J Unit Test
- 隐马尔可夫模型HMM学习备忘
- linux通过mail命令发送到外部邮件
- js实现点击按钮传值
- 快速格式化代码(HTML、CSS)
- 大量原创视频教程分享(01)---XSL语法教程
- 计算机控制技术证书可以考吗,计算机控制技术专业可考哪些资格证书
- OCJP认证有什么用
- laravel 递归 无限层级分类
- 机顶盒网络包获取方式
- linux 文件去重
- 思岚激光雷达rplidar从ROS 1到ROS 2的移植
- 51ditu maps API 使用——显示所有信息——点击链接显示对应标记浮窗[修]
- python爬虫登录下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...
- 微信小程序开发报错及解决记录
- 求函数在x0处的增量_设函数y=2x^2,已知其在点x0处自变量增量时,对应函数增量的线性主部为-0.6,则x0=()A.0B.1C.-0....
- 服务器电话销售话术,电话销售必看:让客户无法拒绝的13个经典话术