本文为大家分享了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;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2018-08-13

用C语言实现分治方法数组的排序,C语言实现分治法实例相关推荐

  1. c语言中的字符串数组,详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...

  2. c语言 用指针对数组元素排序

    用指针对数组元素排序 请用程序实现 使用指针对数组元素进行由小到大排序. 函数定义 void sort (int n, int *p); 参数说明 n, 整型,表示数组长度 p, 整型指针,表示需要排 ...

  3. 查找数组元素最大值和最小值(分治法)

    1. 问题 给定一个数组,要求找出数组中的最大值和最小值,假设数组中的值两两各不相同 2. 思路 2.1 首元素比较法 定义变量 max.min , 分别将第一个元素分别赋值给这两个变量,然后依次遍历 ...

  4. c语言输入一个三位数由小到大排序,c语言程序设计练习题.doc

    c语言程序设计练习题 顺序程序设计 1.输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321). .输入任意大小的三个整数,判断其中是否有两个奇数一个偶数.若是,则输出"YE ...

  5. c语言中的一维数组的定义,C语言一维数组的定义和引用

    <C语言一维数组的定义和引用>由会员分享,可在线阅读,更多相关<C语言一维数组的定义和引用(5页珍藏版)>请在人人文库网上搜索. 1.C语言一维数组的定义和引用在程序设计中,为 ...

  6. c语言字符二维数组传参,C语言函数传递二维数组

    C语言如果给函数传递二维数组作为参数 问题的产生 先看一个传递二维数组的例子: #include void foo(int a[][], int m, int n) { int i = 1; int ...

  7. c语言指针转换成数组,浅议C语言中灵魂数组和指针的互操作(转)

    浅议C语言中灵魂数组和指针的互操作(转)[@more@]曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减. 当然了,这是无可非议的,但是 ...

  8. c语言程序输入n个数字排序,C语言数组 输入n个数据(n由操作者从键盘输入,n20)怎么输,要排序...

    C语言数组 输入n个数据(n由操作者从键盘输入,n<20)怎么输,要排序 答案:3  信息版本:手机版 解决时间 2019-10-04 21:28 已解决 2019-10-03 21:17 最佳 ...

  9. go for 循环遍历数组并排序_Go语言基础教程:for循环语句

    一.程序的流程结构 程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构. 顺序结构:代码从上向下逐行的执行 选择结构:条件满足,某些代码才会被执行.0-1次 if语句,switch语句 循环结 ...

最新文章

  1. Xcode5下使用纯代码构建简单的HelloWorld程序
  2. 决胜秋招!分享128 道 Python 精选面试题!
  3. CH - 6901 骑士放置(二分图最大独立集-二分图最大匹配+奇偶拆点)
  4. 这些世界罕见的地质奇迹,你认识几个!
  5. linux命令 选项,Linux常用命令及选项
  6. 概率矩阵分解模型 PMF
  7. 计算机系统的组成和应用,计算机系统组成与应用领域的考点
  8. ubuntu中fcitx输入法不显示拼音与候选词框
  9. 基于模糊聚类的图像分割
  10. 保持简单----纪念丹尼斯•里奇(Dennis Ritchie
  11. python爬虫-计算机要点
  12. 电脑只有飞行模式,不显示任何wifi信号
  13. 日月光华深度学习(四)-计算机视觉-卷积神经网络
  14. QQ2005正式版将于27日发布!(转)
  15. android os感染病毒,安卓系统能感染win系统病毒吗?
  16. 齐博x1新用户手工注册接口
  17. MMORPG游戏的人工智能(AI)和行为树设计
  18. h'tml和java代码,Tapestry 教程(七)在Tapestry中一起使用Hibernate
  19. 对semantic的部分总结
  20. 事业单位数字推理技巧(一)

热门文章

  1. Symfony2 学习笔记之模板使用
  2. 向线程传递数据与线程用回调方法检索数据
  3. 卷积核的数量是不是越多越好?-分类0,5
  4. python显示控制台行情_python命令行查看股票基本行情数据
  5. linux 逻辑运算符and,布尔逻辑运算符
  6. 3.6 交并比-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  7. 一文读懂全系列树莓派!
  8. 基于FPGA的HDB3数字编码器设计
  9. JavaScriptDate对象
  10. Class.getResourceAsStream和ClassLoader.getResourceAsStream方法