一个排列组合问题(大虾门救命啊。。。。) ( 积分: 200 )

  • 主题发起人 主题发起人 headwsg
  • 开始时间 开始时间
H

headwsg

Unregistered / Unconfirmed
GUEST, unregistred user!
有1..n个数字,这相当于一个集合。
循环这个集合的每个数字,比如说循环到m(1<=m<=n),那么m将1..n分成两个集合(1..m-1)(m+1..n),
m+ 循环(1..m-1)这个集合每个数字,循环完毕,在循环(m+1..n)每个数字,组成一个排列串。
比如说 1..4 那么将组成如下排列串
1 2 3 4
1 3 2 4
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
3 1 2 4
3 2 1 4
4 1 2 3
4 2 1 3
4 3 1 2
4 3 2 1
 
不懂,就是不重复地遍历出 1..n 的各种排列组合吗
 
to helloqiner
不是1..n的排列组合。
注意一下,当循环到 m 的时候 ,m前的数字 (1..m-1) 不能和m后的数字(m+1..n)交叉排列组合。
比如上边例子中不能出现 2 3 1 4,分析一下,当m循环到2,
2+(1..1)+(3..4)
2+1+(3..4)
2+1+3+(4..4) 2+1+4+(3..3)
2+1+3+4 3+1+4+3
不知道我这么写能不能说明问题,实在是表达能力有限。。谢谢您的关注。
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
837
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部