您的位置:首页 > 其它

关于数学中排列组合之组合算法实现

2013-04-18 17:50 711 查看
比如从 10个数字里 选出4个数字的所有可能的情形。

       可以用arraylist 来 帮助我们存放 10个 数字 ,从list 的0位开始遍历  每遍历一次 remove 一个元素     当10个元素 移除 6个 所有可能的 组合都找出来了。

当然这里面会用到递归调用。算法比较粗糙,有更简练的可以分享出来,谢谢。                          

                                          int flag = 1;

int[] array = new int[d];
for (int i = 0; i < c; i++) { // 藍球
Log.v("bule:", "i=" + i + "值:" + bulelist.get(i));
// 也算是初始化这个列表
List<Integer> maylist = SaveUtils.Transform(strMay);
while (maylist.size() >= d) {
// 一個個的用掉
int num = maylist.get(0);
array[0] = num; // 组合的第一个元素
Log.v("Save", "num=" + num);
List<String> l; 
if(d-1>0){
l= getIntList(flag, maylist, d-1);
for (int k = 0; k < l.size(); k++) {
String mayred = num + " " + l.get(k);
String text = strSure + " " + mayred + " "
+ bulelist.get(i);
Log.v("Save", "text=" + text);
WriteStringToFile(text);
}
}else{
l=getIntList(flag, maylist, d);
for (int k = 0; k < l.size(); k++) {
String mayred = l.get(k);
String text = strSure + " " + mayred + " "
+ bulelist.get(i);
Log.v("Save", "text=" + text);
WriteStringToFile(text);
}
}
maylist.remove(0); // 移除第一个元素
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: