读书人

递归总结一 全排列有关问题

发布时间: 2012-12-20 09:53:21 作者: rapoo

递归总结一 全排列问题

全排列问题:这是描述数字的全部排列结果的一类问题。有时候经常参杂着一些限制条件。比如12345的全排列,其中34不能连着出现等等。本文以简单的全排列为对象,阐述递归的思想。

递归,要有终止条件,然后向终止条件靠就得到结果了。终止条件可以不止一个。

大致过程如下:

if(终止条件1)

?? dosomething;

if(终止条件2)

?? dosomething;

else

?去向终止条件递归。

?

本文以简单的整数全排列问题为demo,示范递归思想。取123456去打印全排列。其中带筛条件的全排列指不能34连续出现的全排列。

?

全排列代码如下:

?

说明:简单全排列只需要找到终止条件 输入待排输入大小为1,然后打印操作链表中的值和这一个最终值就好了,还可以顺便统计处方法总数。而带筛选条件的全排列则只需要将符合条件的结果筛选保存到map中,然后打印map就好了。这里筛选使用了正则表达式,更多关于正则表达式的知识可以查看 apache 的oro项目,具体链接如下:http://jakarta.apache.org/oro/

?

读书人网 >编程

热点推荐