读书人

组合算法1234要生成三个位置不一定

发布时间: 2013-01-06 15:44:47 作者: rapoo

求一个组合算法,1234,要生成三个位置不一定的数。
1234
123
124
121
122
211
212
213
....

请问怎么写好呢?
[解决办法]
写一个二进制计数器,
例如: 12345五个数字,那么就会有2的5次方-1 个组合。
就用5位二进制计数。当计数器为11000时,就代表12,二进制的每位对应那5个数字,为1时就代表应用那一位。
看下面源码。
[解决办法]

//笛卡尔积
public static List<String> conbination( String prefix ){
List<String> list = new ArrayList<String>();
if( prefix.length() < 6 ){
for( int ii = 1 ; ii <= 7 ; ii++ ){
list.addAll( conbination( prefix+ii ) ) ;
}
}
else{
//System.out.println( prefix );
list.add( prefix );
}
return list;
}
List<String> list = conbination("");

读书人网 >软件架构设计

热点推荐