- 浏览: 253147 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jeans_1312:
...
JAVA检测字符串编码并转换 -
zenzuguo:
为啥我在eclipse tomcat6.0启动时总报错
Ma ...
appfuse2.0.2在eclipse下的开发和使用 -
josewu2009:
楼主我用你的方法在window机器 上 压缩后 ,解压文件时报 ...
java压缩文件夹下的所有文件和选定文件及乱码解决 -
TonyLian:
我觉得2楼提出的,只不过是看起来更漂亮而已,原写法也不会出现B ...
Ibatis动态查询例子(#和$以及iterate等的用法) -
zhaoshg:
谢谢 lemonweirui 的更正,帮我发现了一个bug,谢 ...
Ibatis动态查询例子(#和$以及iterate等的用法)
Java排列组合算法
- 博客分类:
- java
import java.util.ArrayList; /** * 全排列算法 * */ public class Arrange { private int total = 0; private ArrayList<string></string> arrangeList = new ArrayList<string></string>(); public Arrange() { } private void swap(String list[], int k, int i) { String c3 = list[k]; list[k] = list[i]; list[i] = c3; } public void perm(String list[], int k, int m) { if (k > m) { StringBuffer sb = new StringBuffer(); for (int i = 0; i <= m; i++) { sb.append(list[i]).append(","); } if (sb.length()>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<string></string> getArrangeList() { return arrangeList; } public static void main(String args[]) { String list[] = { "1", "2", "3", "4", "5" }; Arrange ts = new Arrange(); 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; /** 组合算法 */ public class Combination { private ArrayList<string></string> combList= new ArrayList<string></string>(); 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) if (bs.get(++start)) break; if (start >= m) return false; int end = start; while (end < m) if (!bs.get(++end)) break; if (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(); for (int i = 0; i < array.length; i++) if (bs.get(i)) { sb.append(array[i]).append(','); } sb.setLength(sb.length() - 1); combList.add(sb.toString()); } public ArrayList<string></string> getCombList() { return combList; } public static void main(String[] args) throws Exception { Combination comb = new Combination(); comb.mn(new String[]{"1","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<string></string> getArrangeOrCombine(String[] args,int n, boolean isArrange) throws Exception{ if (args.length<=0) { throw new Exception("array.length<=0"); } if (n>args.length) { throw new Exception(" n>array.length"); } Combination comb = new Combination(); comb.mn(args, n); if (!isArrange) { return comb.getCombList(); } ArrayList<string></string> arrangeList = new ArrayList<string></string>(); 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; } public static void main(String[] args) { try { ArrayList<string></string> arrangeOrCombine = ArrangeCombine.getArrangeOrCombine(new String[]{"1","2","3","4","5","6"}, 3, false); ArrayList<string></string> arrangeOrCombine2 = ArrangeCombine.getArrangeOrCombine(new String[]{"1","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.out.println("============================="); for (int i = 0; i < arrangeOrCombine2.size(); i++) { System.out.println(arrangeOrCombine2.get(i)); } System.out.println("Total:"+arrangeOrCombine2.size()); } catch (Exception e) { e.printStackTrace(); } } }
发表评论
-
JProfiler 7.X注册码
2013-05-09 11:23 2296L-Larry_Lau@163.com#24777-1i8 ... -
JVM介绍
2012-03-23 09:52 1020JVM 一、什么是Java虚拟机 当你谈到Jav ... -
Velocity语法
2012-03-22 18:20 1197一、基本语法 1、& ... -
UrlRewrite使用小结(转)
2011-09-01 10:37 1335urlrewrite顾名思义,就是 ... -
JAVA检测字符串编码并转换
2011-08-03 14:15 5890就一个类,detectUtf8(String w3UrlPar ... -
JAVA NIO 简介
2011-03-09 13:20 910http://www.iteye.com/topic/8344 ... -
解读NIO Socket非阻塞模式
2011-03-09 11:58 1327前言: jdk供的无阻塞I/O(NIO)有效解决了多 ... -
一台机器运行多个JBoss多实例
2011-02-28 10:12 7614我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JB ... -
如何使 maven+jetty运行时不锁定文件
2011-02-23 13:07 2652原因是Jetty会使用内存映射文件来缓存静态文件,其中包括js ... -
java压缩文件夹下的所有文件和选定文件及乱码解决
2010-12-27 15:04 2263在linux下,如果文件夹内的文件是中文名,那么压缩后,这些文 ... -
Json-lib在Json转Java时日期为空处理出错的解决办法
2010-12-07 20:03 12118我在处理json和java的相互转换中出现这样 ... -
二进制、八进制、十进制、十六进制
2010-11-06 12:57 1797一、 十进制与二进 ... -
WebService开发经验(转载)
2010-11-05 08:52 1924去年,在一个大型项目(1500w)中用到Web Servi ... -
根据sessionId获取Session对象
2010-10-22 15:51 7618Servlet2.1之后不支持SessionContext里面 ... -
Dom4J工具类
2010-09-17 16:34 2225import java.io.File; import ja ... -
Spring事务配置的五种方式
2010-09-02 17:20 841Spring配置文件中关于事务配置总是由三个组成部分, ... -
java webservice的发布以及调用
2010-08-25 13:13 6017安装axis 下载:http://ws.apache.org/ ... -
利用Spring的AOP来配置和管理你的二级缓存(EHCache)
2010-08-03 16:23 928如果我们的项目中采用的是Spring+hibernate来构 ... -
Java操作XML文件 dom4j 篇
2010-07-30 16:44 1016在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它 ... -
dom4j建立,修改XML文档,并解决格式化输出和中文
2010-07-30 16:40 1179package com.holen.dom4j; imp ...
相关推荐
排列组合 排列 组合 java排列组合算法 排列组合算法
Java排列组合算法 - 郭睿的专栏 - CSDN博客Java排列组合算法 - 郭睿的专栏 - CSDN博客
本资源附带文档解释了排列组合算法的实现和原理。其中排列算法是基于递归实现的,组合算法是基于高效的位移法实现的。代码是使用Java版实现的。
Java排列组合_组合算法,利用list及set的无序性, 通过递归实现,不同于以往的排列组合 自娱自乐
排列组合算法实现,支持模板类。支持重复数的排列。算法采用递归方法,简单易懂。
6位数,共有几种排列组合的算法,java实现
此外,文档还提供了各种排列组合算法的详细代码示例和实现细节,包括递归和迭代方法。文档还涵盖了高级主题,如如何计算有重复元素的排列组合数量,以及如何优化这些算法的性能。 无论您是Java编程的初学者还是有...
从n个数组中取出所有排列组合(Java实现)
介绍了几种用JAVA实现的排列组合算法,有需要的朋友可以参考一下
所使用的算法应该是效率最高的算法,而且这两个类都只是对需要排列组合的数组的下标进行处理,所以能对任何类型的数组进行排列组合。
主要为大家详细介绍了高效的java版排列组合算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这是算法课老师叫我们做的一个算法作业,我是按照他说的写的,如果自己写的话完全用不着那么多行,呵呵。
用java语言写的组合数学中生成排列算法的代码,并由界面
用JAVA来计算并按条件来排列时间 现在把符合奇偶数排列的时间排列出来
主要介绍了Java获得一个数组的指定长度排列组合算法,结合实例形式分析了java排列组合相关数组遍历、运算操作技巧,需要的朋友可以参考下
主要为大家详细介绍了Java实现多个数组间的排列组合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
阶乘与排列组合算法!在各行各业都能用得到的,比较彩票业,以及复杂的生产环境预测等软件开发
主要为大家详细介绍了JAVA实现abc字符串的排列组合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
工具类,apache,工具类-tools