最近看到一个问题,大概是这样:
用1、2、2、3、4、5这六个数字,用你熟悉的语言写一个f()函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
用for循环做太抽象,用set判定重复又太繁琐,还是用递归吧。
主要在于如何解决输出中重复的问题,
方法是先把输入的数字进行排序,
在递归调用时,如果碰到2...2这样的组合,直接跑到最后一个2进行递归,
避免重复。
初步代码如下:
java版
最近看到一个问题,大概是这样:
用1、2、2、3、4、5这六个数字,用你熟悉的语言写一个f()函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
用for循环做太抽象,用set判定重复又太繁琐,还是用递归吧。
主要在于如何解决输出中重复的问题,
方法是先把输入的数字进行排序,
在递归调用时,如果碰到2...2这样的组合,直接跑到最后一个2进行递归,
避免重复。
初步代码如下:
java版