http://www.iteye.com/topic/770382提到:
4.1~20的整数的全排列,因为不才以前也研究过排列组合的问题,于是有了本专题。 最近的专题更多的是在给条鱼人家吃,没有讲怎么捕鱼。所以今天在介绍优雅代码之前,提出一个解决问题的方法论。 复杂问题都是由简单问题组成的,先解决简单问题。 言简意赅,任何复杂问题都是纸老虎。当你面对99*99时,你就要考虑将他变成1+1,然后解决1+1。 有了这个方法论,面对1-20的全排列。你知道怎么做了吧。没错,转变成AB的全排列。 AB: AB BA 太简单了,加个“C”吧。 ABC: ABC ACB BAC BCA CAB CBA 看见标红色的字母了吧,无视它的存在, 就变成了 AB ,BC,AC 的 全排列。 大问题可沿用小问题的解法,让你想到了什么。一个是递归,一个是动态规划。这里显然适合用递归。 假设有n个字符,基本的算法就是: 1.n>2时,变成n-1问题 2.n=2时,输出 3.滚动数组 于是,一个优雅的方案浮出水面: