已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java实现排列组合算法第一部分:java实现排列算法具体的代码.?import java.util.ArrayList; /* * java实现排列算法 * */public class ArrangeTest private int total = 0; private ArrayList arrangeList = new ArrayList(); public Arrange() /* * 交换方法的实现 */private void swap(String list, int k, int i) String c3 = listk; listk = listi; listi = c3; /* * perm方法的实现 */public void perm(String list, int k, int m) if (k m) StringBuffer sb = new StringBuffer(); for (int i = 0; i 0) sb.setLength(sb.length()-1); arrangeList.add(sb.toString(); total+; else for (int i = k; i = m; i+) swap(list, k, i); perm(list, k + 1, m); swap(list, k, i); /* * 获得总数 */public int getTotal() return total; public ArrayList getArrangeList() return arrangeList; /* * main方法的实现 */public static void main(String args) String list = 1, 2, 3, 4, 5 ; ArrangeTest ts = new ArrangeTest (); ts.perm(list, 0, list.length-1); for (int i = 0; i ts.getArrangeList().size(); i+) System.out.println(ts.getArrangeList().get(i); System.out.println(total: + ts.total); 第二部分、组合算法的实现?import java.util.ArrayList; import java.util.BitSet; /* * java组合算法的实现 * */public class Combination private ArrayList combList= new ArrayList(); /* *mn方法的实现 * */public void mn(String array, int n) int m = array.length; if (m n) throw new IllegalArgumentException(Error m n); BitSet bs = new BitSet(m); for (int i = 0; i n; i+) bs.set(i, true); do printAll(array, bs); while (moveNext(bs, m); /*说明 这个方法不太容易理解,也是组合的核心算法,下面进行简单的讲解. * 1、start是从第一个true片段作为起始位,end作为截止位 * 2、第一个true片段都设置成false * 3、数组从0下标起始到以第一个true片段元素数量减一为下标的位置都置true * 4、把第一个true片段end截止位置true * * param bs 数组是否显示的标志位 * param m 数组长度 * return boolean 是否还有其他组合 */private boolean moveNext(BitSet bs, int m) int start = -1; while (start = m) return false; int end = start; while (end = m) return false; for (int i = start; i end; i+) bs.set(i, false); for (int i = 0; i end - start - 1; i+) bs.set(i); bs.set(end); return true; /* * 输出打印结果 * * param array 数组 * param bs 数组元素是否显示的标志位集合 */private void printAll(String array, BitSet bs) StringBuffer sb = new StringBuffer(); /拼接StringBuffer,这个地方一定要用StringBuffer,不要直接使用String 的+ for (int i = 0; i array.length; i+) if (bs.get(i) sb.append(arrayi).append(,); sb.setLength(sb.length() - 1); combList.add(sb.toString(); public ArrayList getCombList() return combList; /* * 主方法测试 * */public static void main(String args) throws Exception Combination comb = new Combination(); comb.mn(new String1,2,3,4,5,6, 3); for (int i = 0; i comb.getCombList().size(); i+) System.out.println(comb.getCombList().get(i); String list = comb.getCombList().get(i).split(,); Arrange ts = new Arrange(); ts.perm(list, 0, list.length-1); for (int j = 0; j ts.getArrangeList().size(); j+) System.out.println(u0009+ts.getArrangeList().get(j); 第三部分、实现排列组合算法调用的工具类?import java.util.ArrayList; /* * 调用组合算法的工具类 * */public class ArrangeCombine public static ArrayList getArrangeOrCombine(String args,int n, boolean isArrange) throws Exception if (args.length=0) throw new Exception(array.lengthargs.length) throw new Exception( narray.length); Combination comb = new Combination(); comb.mn(args, n); if (!isArrange) return comb.getCombList(); ArrayList arrangeList = new ArrayList(); for (int i = 0; i comb.getCombList().size(); i+) String list = comb.getCombList().get(i).split(,); Arrange ts = new Arrange(); ts.perm(list, 0, list.length-1); for (int j = 0; j ts.getArrangeList().size(); j+) arrangeList.add(ts.getArrangeList().get(j); return arrangeList; /main方法的实现 public static void main(String args) try ArrayList arrangeOrCombine = ArrangeCombine.getArrangeOrCombine(new String1,2,3,4,5,6, 3, false); ArrayList arrangeOrCombine2 = ArrangeCombine.getArrangeOrCombine(new String1,2,3,4,5,6, 3, true); for (int i = 0; i arrangeOrCombine.size(); i+) System.out.println(arrangeOrCombine.get(i); System.out.println(Total:+arrangeOrCombine.size(); System.o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务运营专员绩效表现评定表
- 制造业生产线上工人产品质量绩效考核表
- 智慧教育直播平台建设及运营计划
- 铁路工程公司现场技术指导项目执行绩效评定表
- 2026年冷藏仓库安全管理制度及规范
- 湘教版七年级下册音乐初中音乐测试题(含答案)初中音乐试卷及答案
- 2026年老旧小区改造外墙保温施工方案
- 2025-2026学年走绛州教学设计
- 典当行内部统计管理制度
- 分包商内部管控制度
- 2026年内蒙古交通职业技术学院单招职业倾向性测试题库及答案详解(基础+提升)
- 以热爱为翼为青春飞驰+课件+-2026届高三高考百日冲刺励志主题班会
- 2026-2030中国汽车加气站行业市场发展分析及发展趋势与投资机会研究报告
- 2026年AI原生网络架构项目投资计划书
- 萍乡市事业单位2026年统一公开招聘工作人员备考题库含答案详解(突破训练)
- 【历史】2025-2026学年统编版八年级历史下册知识点填空
- 2025年医疗影像诊断操作流程指南
- GB/T 46816-2025铝合金法兰锻件通用技术规范
- 2026年建筑设备自动化设计中的人工智能应用
- 部编版高中语文背诵补充篇目汇-总(选修)
- 海洋科考船探索之旅
评论
0/150
提交评论