![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归
jiyanfeng1
喜欢算法和编程的工科男
展开
-
字符串的排列组合问题
本文转自:http://blog.csdn.net/wuzhekai1985/article/details/6643127 问题1 :输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 思路:这是个递归求解的问题。递归算法有四个特性:(1)必须转载 2012-10-01 14:02:26 · 2087 阅读 · 0 评论 -
两个字符串的距离
对于两个不同的字符串,我们有一套操作方法来把他们变得相同,具体方法为:修改一个字符(如把“a”替换为“b”)删除一个字符(如把“traveling”变为“travelng”)比如对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。无论增加还是减少“g”,我们都仅仅需要一次操作。我们把这个操作所需要的次数定义为两个字符串的距离原创 2013-01-20 04:48:30 · 1669 阅读 · 0 评论 -
改二叉树为链表,使每个节点指向其中序遍历的下个节点
改二叉树为链表,使每个节点指向其中序遍历的下个节点用递归的方法。(以下代码已经过测试)struct node *btree2list(struct node *tree) { struct node *right; struct node *left; struct node *list=NULL; struct node *tmp; if(tree) { right =原创 2013-02-06 15:07:40 · 523 阅读 · 0 评论 -
八皇后问题,解决思路和代码
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。这里给出八皇后问题的解答。思路是:对解答树进行深度遍历,当遍历抵达第8层的时候,我们便找到了一个解。如果在抵达第8层之前,发现解答树的节点违反了八皇后问题的要求,那么进行回溯。具体的代码如下:原创 2013-01-21 06:19:38 · 2405 阅读 · 0 评论 -
[LeetCode] N-Queen N皇后
相关问题1:八皇后问题,解决思路和代码相关问题2:The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutio原创 2014-12-23 15:02:02 · 2637 阅读 · 0 评论 -
[LeetCode] Restore IP from string 从字符串恢复IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does原创 2014-12-07 13:43:58 · 681 阅读 · 0 评论 -
[LeetCode] 求一个数的n次方 power
求一个数的n次方。非递归算法:unsigned Power( unsigned n, unsigned p ){ // 计算n的p次 // 把p表示成二进制形式。例如,p=101010 // n^(10) = ( n^(1) )^2 // n^(110) = n^(100)*n^(10) = ( ( n^(1) )^2 )^2 * n^(10)...原创 2012-09-25 10:55:44 · 4555 阅读 · 0 评论 -
最大最小值:给n个实数,求它们之中的最大值和最小值,要求比较次数尽量小。
最大最小值给n个实数,求它们之中的最大值和最小值,要求比较次数尽量小。用递归的方法可以做。假设需要T(n)的时间求n个数的最大值和最小值,显然T(2) = 1。我们按照分治三步法进行算法设计。划分把n个数均分为两半。递归求解求左半的最小值minL 和最大值maxL以及右半最小值minR和最大值maxR。合并所有数的最大值为maxfmaxL; maxRg,最小值为minfminL;原创 2013-01-25 14:20:24 · 7120 阅读 · 0 评论 -
Minimum insertions to form a palindrome
给你一个字符串S,插入一些字符,把 S 转换成一个回文字符串。例如:ab: Number of insertions required is 1. babaa: Number of insertions required is 0. aaabcd: Number of insertions required is 3. dcbabcdabcda: Number of inser原创 2015-08-03 11:12:18 · 1051 阅读 · 0 评论 -
[LeetCode] Count Complete Tree Nodes
Given a complete binary tree, count the number of nodes.思路:找到最左边的节点和最右边的节点,如果二者高度一致,那么说明最后一层是满的,返回2^h-1。否则,递归下去。代码: int countNodes(TreeNode* root) { if(!root) return 0;原创 2015-08-03 10:16:06 · 608 阅读 · 0 评论 -
乘法算法-Karatsuba算法
考虑两个n位整数x和y的乘法。基本的算法是O(n^2)的。以10进制为例,用bigint表示大整数类型,s[1]表示个位,len为位数。按照小学数学多位数乘法法则,程序如下:bigint mult(bigint a, bigint b){ bigint c; c.len = a.len + b.len ; for(int i=1; i <= c.len; i++) c.s[i]原创 2013-01-26 04:54:59 · 14635 阅读 · 0 评论 -
矩阵乘法-Strassen矩阵乘法
一个n-by-n矩阵是n行n列的数排列起来的方阵。矩阵A第i行第j列数记为aij。定义两个n阶矩阵的乘法C = A * B,其中cij = ai1b1j + ai2b2j + ... + ainbnj基本的矩阵乘法是O(n3)的,程序如下:void matmult ( matrix a , matrix b , matrix & c){ c.m = a.m; c.n = b.n fo原创 2013-01-26 05:40:13 · 3131 阅读 · 0 评论 -
状态机的状态序列
一个自动机有ABC三个状态,每个状态都可以结束,A为入口,那么就可以得到一个状态序列,问,如果这个状态序列的长度为n的概率是多大?可以用递归的方法来做。设状态序列起始结点是ch、长度为n的概率是prob(char ch, int n)。p(char ch1, char ch2)表示状态ch1到状态ch2的转移概率。那么,prob(ch, n) = p(ch,‘A’)*prob(原创 2012-09-25 07:34:48 · 2366 阅读 · 0 评论 -
一个无重复面值的找零算法的思路与实现
本题的另外一个解法请看:一个无重复面值的找零算法的思路与实现(二)在论坛上看到有人问了一个类似的算法题:给出升序排列的N个数字,比如1, 2, 3, 7, 70找出无法被这组数字组成的最小正整数。(这组数字中每个数字最多使用一次)(1)简单描述你的算法和思路。(2)用C/C++实现(3)分析你的代码的时间复杂度和空间复杂度解题思路:这个问转载 2012-10-17 07:03:40 · 2304 阅读 · 0 评论 -
输出所有的字符组合(可重复)
EASY已知字符串里的字符是互不相同的,现在任意组合,比如ab,则输出aa,ab,ba,bb,编程按照字典序输出所有的组合。本题可用递归的思想,设置一个变量表示已输出的个数,然后当个数达到字符串长度时,就输出。代码如下:#include //#include using namespace std;void perm(char* str, char array[],原创 2012-10-18 01:47:47 · 2818 阅读 · 0 评论 -
找零钱递归实现
无重复找零钱请看:http://blog.csdn.net/jiyanfeng1/article/details/8079530题目:现有1元、2元、5元、10元、20元面值不等的钞票,问需要20元钱有多少种找钱方案,打印所有的结果! 分析:此题如果没要求打印结果,只要求打印出一共有多少种方案,那么可以直接用动态规划,参考背包问题——“01背包”及“完全背包”装满背包的方案转载 2012-10-17 06:48:40 · 3496 阅读 · 0 评论 -
杨氏矩阵查找
先看一个来自算法导论习题里6-3与剑指offer的一道编程题(也被经常用作面试题,本人此前去搜狗二面时便遇到了): 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字6,则返回true;如果原创 2012-11-16 03:23:37 · 4765 阅读 · 1 评论 -
n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。思路1:既然题目有一个数字圆圈,很自然的想法是我们用一个数据结构来模拟这个圆圈。在常用的数据结构中,我们很容易想到用环形列表。我们可以创建一个总共有m个转载 2012-11-22 13:33:36 · 1706 阅读 · 0 评论 -
一个无重复面值的找零算法的思路与实现(二)
这篇博文与“一个无重复面值的找零算法的思路与实现(一)”是姊妹篇。解法是基于“找零钱递归实现”,代码和基本相同,唯一不同的地方是第26行代码。代码如下:#include #include using namespace std;//20块钱找零,零钱由1、2、5、10四种币值#define MAX_VALUE 17int array[] = {1,2,5,10,MAX_V原创 2012-10-18 01:13:59 · 691 阅读 · 0 评论 -
循环赛日程表
循环赛日程表<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->设有n位选手参加网球循环赛,循环赛共进行n-1天,每位选手要与其他n-1位选手比赛一场,且每位选手每天必须比赛一场,不能轮空。试按此要求为比赛安排日程。思路:用递归方法编写的问题解决程序具有结构清晰,可读性强等优点,且递归算法的设计比非递归原创 2013-01-21 09:34:40 · 755 阅读 · 0 评论 -
[LeetCode] Image Overlap 图像重叠
Two imagesAandBare given, represented asbinary, square matrices of the same size. (A binary matrix has only 0s and 1s as values.)We translate one image however we choose (sliding it left, righ...转载 2019-05-02 22:32:34 · 592 阅读 · 0 评论