递归
文章平均质量分 74
Everlasting2016
我流我的汗水,华丽如天花乱坠
展开
-
数字的组合
题目: 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符abc,则打印出由字符a、b、c所能组合出来的所有字符串a、b、c、ab、ac、bc、abc‘。 前面的博客中解析了全排列的问题,当交换字符串中的两个字符时,虽然能得到两个不同的排列,但却是同一个组合,比如ab和ba是不同的排列,但只算是一个组合 基本思路: 子问题: 求n个字符组成长度为m的组合的问题分解成两个子问题原创 2016-04-13 17:12:00 · 462 阅读 · 0 评论 -
数字的全排列
题目: 输入一个字符串,打印出该字符串中字符的所有全排列》例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc.、acb、bac。cab和cba。 一、递归版本 1、未去除重复值 子问题:第一个数字与后面每一个数字进行交换 结束条件:遍历到最后一个字符,后面再也无法进行交换 代码如下: void FullPermutation(char arr[], int原创 2016-04-13 16:40:12 · 587 阅读 · 0 评论 -
汉诺塔问题
题目: A、B、C 三个桌子,其中A桌子上放了几个大小不同的盘子,盘子的排列顺序为: 从上到下,依次从小到大递增;现要求把这些盘子从 A 桌子上移动到 C 桌子上,盘子移动时有一点要求:每次移动必须保证三张桌子上大盘子在下、小盘子在上。实现函数打印最优移动轨迹 举例说明: (1) A 上一张 盘子时 移动顺序: A -> C (2)A上有两张盘子时: 移动顺序: A->B B->C原创 2016-04-14 19:50:54 · 596 阅读 · 0 评论