首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于求全排列,该怎么解决

2012-04-17 
关于求全排列现在正在做的一个算法,由于问题的特殊性。一个排列(1,2,3)与它的逆排列(3,2,1)的结果是一样的。

关于求全排列
现在正在做的一个算法,由于问题的特殊性。一个排列(1,2,3)与它的逆排列(3,2,1)的结果是一样的。因此在程序中不需要计算逆排列。

因为一个长度为n的序列的排列个数有n!个,且都是对称的。即:其中n!/2是另外n!/2的逆排列。

怎样设计一个求全排列的算法,只求其中一半排列,而不用计算它们对应的逆排列?

[解决办法]
比如 (1,2,3,4,5)
分成 
(1,2),(3,4,5)
==> (1,3,4,5,2),(1,3,5,4,2),(1,4,3,5,2),(1,4,5,3,2),(1,5,3,4,2),(1,5,4,3,2)

(1,3),(2,4,5)
==> (1,2,4,5,3),(1,2,5,4,3),(1,4,2,5,3),(1,4,5,2,3),(1,5,2,4,3),(1,5,4,2,3)

.....
如此下去

热点排行