递归算法
zhuifengmax
这个作者很懒,什么都没留下…
展开
-
最小划分数
题目描述设S是一个具有n个元素的集合,S=⟨a1,a2,……,an⟩,现将S划分成k个满足下列条件的子集合S1,S2,……,sk,且满足:1.Si≠∅2.Si∩Sj=∅ (1≤i,j≤k,i≠j)3.S1∪S2∪S3∪…∪Sk=S1∪S2∪S3∪…∪Sk=S则称S1,S2,……,SkS1,S2,……,Sk是集合S的一个划分。它相当于把S集合中的n个元素a1,a2,……,ana1,a2,……,an 放入k个(0<k≤n<30)无标号的盒子中,使得没有一个盒子为空。请你确定nn个元原创 2020-07-20 11:05:19 · 366 阅读 · 0 评论 -
第K大的数
快速排序:输入一个数列,输出第K大的数思路:利用快速排序的二分思想,每次排序后,都有一个基准数,设基准数的位置为 i ,判断 k 与 i 的大小关系,如果 k 大于 i ,则只要对基准数右边的数进行排序,反之则对基准数左边的数进行排序,时间大大减少#include <iostream>using namespace std;int arr[100];int n, k;void quicksort(int left, int right){ int i, j, t;原创 2020-07-13 09:25:37 · 142 阅读 · 0 评论 -
已知前序中序,求后序
已知二叉树的前序和中序,求其后序例:前序(A B D G H C E I F J ) 中序(G D H B A E I C J F) 其后序为:G H D B I E J F C A思路:先序的遍历规则为根—左—右,中序的遍历规则为左—根—右,所以我们在中序中找到与A(A必为根)相等的字符,则在中序中G D H B为A的左子树,E I C J F为A的右子树,在左子树和右子树中,重复前面过程,最后逆向将根打印出来,就是其后序。是一个递归过程#include <iostream>#in原创 2020-07-12 16:16:01 · 1460 阅读 · 0 评论