递归输出n不同元素的全排列

Posted on 2009-04-10 16:55  少林  阅读(1897)  评论(1编辑  收藏  举报

      如何输出n个元素的全排列呢,比如abc,一个共有abc,acb,bac,bca,cab,cba等六种排列方式,一般来说,一个具有n个元素的串有n!中排列方式。

      我们可以把n个元素的排列的生成作为一个取舍问题,例如元素串abc,对于以a开头的排列方式,可以用一下方式进行选取,(1)选择b,构成ab,

继续选择c,构成abc,新串产生结束。但是在第一步时可以不选取b,然后继续往下搜查,这时只有c,选取c,构成ac,最后一个元素才选择b,于是

又产生一个新串acb。这样就要借助一个标志数组来标记哪些元素使用过,哪些元素没有使用过。相关的参考程序如下:

 

 

Code

      

 

Copyright © 2024 少林
Powered by .NET 8.0 on Kubernetes