java如何实现排列组合算法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍java如何实现排列组合算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!java排列组合算法[@more@]import java.util.ArrayLis
千家信息网最后更新 2026年11月01日java如何实现排列组合算法
这篇文章主要介绍java如何实现排列组合算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
java排列组合算法[@more@]import java.util.ArrayList;import java.util.List;/*** 全排列组合算法* @author mukeliang* 2009.10.21*/public class TestComposite {public static void main(String[] args) {// List allList = getFirstData();// List allList = getSecondData();List allList = getThirdData();List targetList = combinatePlan(allList);System.out.println(targetList);}/*** 进行组合排列* @param sourceList* @return List*/private static List combinatePlan(List sourceList) {int[] subSizeArray;int[] subCountArray;int sourceCount = sourceList.size(); // 大list的长度subSizeArray = new int[sourceCount];subCountArray = new int[sourceCount];// 子list当前的值int targetCount = 1;for (int i = 0; i < sourceCount; i++) {List subList = (List) sourceList.get(i);int size = subList.size();subSizeArray[i] = size; // 存放每个子list的长度targetCount *= size; // 最终要返回的list长度subCountArray[i] = 0; // 从0开始 每个都是0// a.println("subCountArray[i]:"+subCountArray[i]);}List targetList = new ArrayList(targetCount);// targetCountfor (int i = 0; i < targetCount; i++) {// 记录每个结果应该包含的元素个数List targetSub = new ArrayList(sourceCount);for (int k = 0; k < sourceCount; k++) {int subIndex = subCountArray[k];targetSub.add(((List) sourceList.get(k)).get(subIndex));}addCount(subSizeArray, subCountArray);targetList.add(targetSub);}return targetList;}/*** 计算List下标: 总是先数最后一位,最后一位数到最大值以后进一位* @param subSizeArray* @param subCountArray*/private static void addCount(int[] subSizeArray, int[] subCountArray) {// subCountArray数组的每个元素都是0 但是个数来记录循环要取的位置for (int i = subCountArray.length - 1; i >= 0; i--) {if (subCountArray[i] < subSizeArray[i] - 1) {subCountArray[i]++;return;} else {subCountArray[i] = 0;}}}/*** 组合结果:* list1下标 list2下标* 0 0* 0 1* 0 2* 1 0* 1 1* 1 2* 2 0* 2 1* 2 2* @return List*/private static List getFirstData(){List list1 = new ArrayList();list1.add("王一");list1.add("王二");list1.add("王三");List list2 = new ArrayList();list2.add("张一");list2.add("张二");list2.add("张三");List allList = new ArrayList();allList.add(list1);allList.add(list2);return allList;}/*** 组合结果:* list1下标 list2下标 list3下标* 0 0 0* 0 0 1* 0 1 0* 0 1 1* 1 0 0* 1 0 1* 1 1 0* 1 1 1* @return List*/private static List getSecondData(){List list1 = new ArrayList();list1.add("王一");list1.add("王二");List list2 = new ArrayList();list2.add("张一");list2.add("张二");List list3 = new ArrayList();list3.add("刘一");list3.add("刘二");List allList = new ArrayList();allList.add(list1);allList.add(list2);allList.add(list3);return allList;}/*** 组合结果:* list1下标 list2下标* 0 0* 1 0* @return List*/private static List getThirdData(){List list1 = new ArrayList();list1.add("王一");list1.add("王二");List list2 = new ArrayList();list2.add("张一");List allList = new ArrayList();allList.add(list1);allList.add(list2);return allList;}}以上是"java如何实现排列组合算法"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
组合
下标
算法
结果
长度
内容
篇文章
个子
个数
价值
元素
兴趣
刘一
小伙
小伙伴
更多
知识
行业
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
科技互联网项目
互联网中国科技
互联网络科技有限公司
互联网科技公司电话
互联网科技缩写
深圳天众互联网科技公司
四川狮子座互联网科技
互联网 科技馆
中国的互联网科技企业的崛起
成都铂石互联网科技做什么的
互联网为啥属于高科技
荆州市昕露互联网络科技有限公司
厦门千工互联网科技有限公司
国大互联网教育科技有限公司薪资
上海钢联属于互联网科技股吗
福州德业互联网科技
北京天晋互联网科技有限公司
知域互联网科技有限公司官网
颐高云石互联网科技
高科技互联网
互联网高科技企业
广州优美互联网科技
小米互联网科技园设置
苏州五指互联网络科技有限
乌苏新华互联网科技做什么的
互联网科技股为什么大涨
互联网科技包装股份有限公司上市
优雇互联网科技有限公司
高科技和互联网的现代国家