作者kerrycc (kerry)
看板java
标题[问题] 组合排列?
时间Thu Jan 10 23:56:14 2008
问题定义:
在一有次序的n个字元中,要取k个,且此k个也依然要有依序性的组合
例如:"ABCDEF"(依字母大小排列) 六个字元要取 4个的组合
有:ABCD, ABCE, ABCF, ABDE, ABDF, ABEF,
ACDE, ACDF, ADEF, BCDE, BCDF, BCEF, BDEF, CDEF
问题点:
想了好几天,一直想不出来,依照平常的做法似乎要如下:
for (i = 0 ; i < str.length() - k + 1 ; i++){
for ( j = i + 1 ; j < i + str.length() - k + 1; j++){
for ( m = j + 1; m < j + str.length() - k + 1; m++){
for ..
temp = 第i个字元+第j个字元..
subset+= temp;
用四个回圈,第一个回圈去固定第一个字元然後去回圈第2, 3, 4个字元
直到四个回圈跑完可得最後全部的集合,但这样的方式总是很土法链钢
而且k的值也不固定,也有可能六取三,请问各位版大们是否有更好的建议,
小弟试过用递回,但似乎功力太弱,一直跑不出来,麻烦各位前辈
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.156.185
1F:推 tkcn:也许你可以先试着用递廻做出 AAAA, AAAB, ..., FFFF 01/11 21:26
2F:→ tkcn:接着只要加上一些判断即可 01/11 21:28