已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 30吨汽车式起重机伸缩臂
- 2025年中职建筑工程造价(工程计价规范)试题及答案
- 2025年大学大二(法学)物权法阶段测试题及答案
- 2025年大学畜牧业(畜禽饲养)试题及答案
- 2025年大学本科(会计学)会计学综合测试题及答案
- 2025年大学护理(血压监测自动化框架工具)试题及答案
- 2025年高职建筑工程(门窗工程施工)试题及答案
- 2025年大学公共事业管理(公共事业规划)试题及答案
- 2026年注册电气工程师(发输变电专业知识考试上)试题及答案
- 2025年中职(安全技术与管理)安全管理阶段测试试题及答案
- 2025年山东省夏季普通高中学业水平合格考试物理试题(解析版)
- 特斯拉工作简历模板
- 公共危机管理(本)-第五次形成性考核-国开(BJ)-参考资料
- 超高分子量聚乙烯纤维项目申请报告
- 北京师范大学珠海校区
- 型钢孔型设计孔型设计的基本知识
- 竖窑控制系统手册
- 煤矿投资可行性研究分析报告
- 河南省高中毕业生登记表【范本模板】
- DB4403-T 63-2020 建设工程施工噪声污染防治技术规范-(高清现行)
- GB∕T 7758-2020 硫化橡胶 低温性能的测定 温度回缩程序(TR 试验)
评论
0/150
提交评论