发布时间:2015-08-06 16:43:31
输出一个字符串所有排列。注意有重复字符。 之前写过一个不含重复字符的串的所有排列算法。几经周折,未能想出处理重复的字符的方法。今天发愿研究了半晚上,仍然没能得出正确的解法。最终在stackoverflow上找到一个目前看到的最完美的解法。 http://stackoverflow.com/questions/6917832/permutation-of-string-letters-how-to-remove-repeated-permutations 该解法可作为很多排列组合组合题目的范本,以处理重复元素的情况。根据该范本,对之前的写的算法做了改进,正确处理了重复元素。......【阅读全文】
发布时间:2015-08-06 16:43:26
反转一个单链表。 (非递归算法好写,递归算法不是很好写) 合并两个升序有序链表。 codepad.org已验证 点击(此处)折叠或打开 #include<stdio.h> #include<stdlib.h> typedef struct tagNode{ int value; struct tagNode* next; }Node; void outputLinkedList(Node * head){ &nb......【阅读全文】
发布时间:2015-08-06 16:43:22
4对括号有多少种可能的合法匹配方式?n对括号呢? 此题是卡特兰数的一个通常应用,相似的还有出栈顺序等。关于卡特兰数的具体内容,请参阅百度百科或Wiki. http://baike.baidu.com/view/2499752.htm 网络上可以搜到很多相关的题目和解答,但是鲜有易懂的推导过程。这里记录一种推导过程如下: 结论:对于n对括号,合法的排列共有C(n,2n) - C(n+1,2n)种.分析:1.考虑n对括号,共有n个 ( 和n个)。对于其全排列,可以看做是2n个空,将n个 ( 放入其中任意n个空中, 剩余的位置由 ) 填充,显然其全排列的个数为......【阅读全文】