![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归与分治
山野雾灯ccc
路漫漫其修远兮,吾将上下而求索。
展开
-
求集合A的子集(图+案例)
子集是一个数学概念:如果集合A的任意一个元素都是集合B的元素,那么集合A称为集合B的子集。 符号语言:若∀a∈A,均有a∈B,则A⊆B。原创 2022-12-12 19:28:51 · 371 阅读 · 0 评论 -
求n个数的全排列(图+案例))
全排列顾名思义,就是对一系列的单个字符进行排列,所有的排列结果就称为全排列, 例如“1,2,3”,其全排列就有:“123”、“132”,“213“、”231“、312”,“321”,有6种, 可以发现其全排列的个数就是n!。原创 2022-12-12 18:20:59 · 643 阅读 · 0 评论 -
递归与分治解决线性时间选择问题
线性时间选择问题:给定线性序集中n个元素和一个整数k,1<=k<=n,要求找出着n个元素中第k小的元素。(1)将n个输入元素划分为n/5(取上限),每组5个元素,只可能有一个组不是5个元素。用任意一种排序算法,将每组中的元素排好序,并取出每组的中位数,共n/5个。(2)递归调用算法select来找出这n/5个元素的中位数。如果n/5是偶数,就找它的两个中位数中较大的一个。以这个元素作为划分基准。#include<stdio.h>#define length 35原创 2020-06-25 15:03:46 · 327 阅读 · 0 评论 -
递归实现四柱汉诺塔问题
四柱汉诺塔问题有a,b,c,d四个柱子,a柱子上有从小到大堆放的n个盘子,欲使a柱上的盘子移动到b柱上面,可以借助c,d柱。①将a上的n-2个盘子移动到c柱上面,借助b,d两柱②将a上的第n-1、n个盘子分别移动到d,b上面,再将c上面的盘子移动到b上面。③c上面的n-2个盘子以此类推。#include<stdio.h>int Move(int n, char a, char b, int sum){ int step = 0; printf("将盘子%d从%c--&原创 2020-06-23 22:29:36 · 1249 阅读 · 1 评论