- 浏览: 259269 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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等的用法)
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 2368L-Larry_Lau@163.com#24777-1i8 ... -
JVM介绍
2012-03-23 09:52 1064JVM 一、什么是Java虚拟机 当你谈到Jav ... -
Velocity语法
2012-03-22 18:20 1260一、基本语法 1、& ... -
UrlRewrite使用小结(转)
2011-09-01 10:37 1381urlrewrite顾名思义,就是 ... -
JAVA检测字符串编码并转换
2011-08-03 14:15 5995就一个类,detectUtf8(String w3UrlPar ... -
JAVA NIO 简介
2011-03-09 13:20 964http://www.iteye.com/topic/8344 ... -
解读NIO Socket非阻塞模式
2011-03-09 11:58 1406前言: jdk供的无阻塞I/O(NIO)有效解决了多 ... -
一台机器运行多个JBoss多实例
2011-02-28 10:12 7653我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JB ... -
如何使 maven+jetty运行时不锁定文件
2011-02-23 13:07 2687原因是Jetty会使用内存映射文件来缓存静态文件,其中包括js ... -
java压缩文件夹下的所有文件和选定文件及乱码解决
2010-12-27 15:04 2322在linux下,如果文件夹内的文件是中文名,那么压缩后,这些文 ... -
Json-lib在Json转Java时日期为空处理出错的解决办法
2010-12-07 20:03 12155我在处理json和java的相互转换中出现这样 ... -
二进制、八进制、十进制、十六进制
2010-11-06 12:57 1873一、 十进制与二进 ... -
WebService开发经验(转载)
2010-11-05 08:52 1987去年,在一个大型项目(1500w)中用到Web Servi ... -
根据sessionId获取Session对象
2010-10-22 15:51 7660Servlet2.1之后不支持SessionContext里面 ... -
Dom4J工具类
2010-09-17 16:34 2293import java.io.File; import ja ... -
Spring事务配置的五种方式
2010-09-02 17:20 907Spring配置文件中关于事务配置总是由三个组成部分, ... -
java webservice的发布以及调用
2010-08-25 13:13 6073安装axis 下载:http://ws.apache.org/ ... -
利用Spring的AOP来配置和管理你的二级缓存(EHCache)
2010-08-03 16:23 1009如果我们的项目中采用的是Spring+hibernate来构 ... -
Java操作XML文件 dom4j 篇
2010-07-30 16:44 1080在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它 ... -
dom4j建立,修改XML文档,并解决格式化输出和中文
2010-07-30 16:40 1226package com.holen.dom4j; imp ...
相关推荐
Java排列组合算法 - 郭睿的专栏 - CSDN博客Java排列组合算法 - 郭睿的专栏 - CSDN博客
在Java中实现排列组合算法可以帮助我们解决很多实际问题,比如数据排序、数据筛选等。下面将详细介绍排列和组合的基本概念以及在Java中的实现方法。 **排列** 是指从n个不同元素中取出m(m≤n)个元素,按照一定的...
总之,这个资源包提供了一个很好的平台,让你能够深入理解并实践Java中的排列组合算法。通过学习和理解这些代码,你不仅可以增强算法设计能力,还能提高解决实际编程问题的能力。记得动手实践,结合文档和代码,将...
这里的`set`并未直接参与实现,但它的无序性特性可以用于优化组合算法,例如检查重复的组合,避免重复计算。 总的来说,Java中的组合算法可以通过递归和集合类如list和set实现。这种方法易于理解和实现,并且可以...
Java排列组合算法是计算机科学中的一种基本算法,它广泛应用于数据分析、机器学习、人工智能等领域。下面将详细介绍高效的Java版排列组合算法的实现。 一、排列组合算法的概念 排列组合算法是指从n个元素中选择m个...
排列组合算法实现,支持模板类。支持重复数的排列。算法采用递归方法,简单易懂。
6位数,共有几种排列组合的算法,java实现
这个"实现了排列组合算法的类(JAVA).rar"文件提供了一种高效的JAVA实现,可以处理任意类型数组的排列和组合。下面将详细讨论排列组合的基本概念,以及在JAVA中实现这些算法的关键点。 排列是指从n个不同元素中...
此外,文档还提供了各种排列组合算法的详细代码示例和实现细节,包括递归和迭代方法。文档还涵盖了高级主题,如如何计算有重复元素的排列组合数量,以及如何优化这些算法的性能。 无论您是Java编程的初学者还是有...
总结来说,从n个数组中取出所有排列组合的Java实现涉及到递归算法、回溯法以及数据结构的操作。理解这些概念并能够熟练运用是成为一名优秀程序员的关键。通过这个例子,我们可以看到如何利用Java的灵活性和表达力来...
这个项目为开发者提供了一个学习和实践排列组合算法、SpringBoot框架以及H2数据库整合的绝佳案例。它不仅展示了如何在后端实现复杂的算法,还涵盖了数据库管理和API设计等多个核心技能。对于希望提升后端开发能力的...
【排列组合的算法作业 Java】 在编程领域,排列和组合是经典的算法问题,它们属于组合数学的一部分,常常出现在数据结构与算法课程的作业中。排列指的是从给定的元素集合中选择并按特定顺序排列所有可能的组合,而...
总结来说,Java中实现排列组合算法主要有两种策略:二进制状态法和递归。二进制状态法适合小规模数据,但效率较低;递归方法虽然直观,但可能导致性能问题。在实际应用中,应根据数据规模和性能需求选择合适的方法。...
根据给定文件的信息,我们可以总结出以下关于Java中m取n排列组合的实现方式,包括重复与不重复的情况,以及如何使用for循环嵌套和递归来实现这些算法。 ### Java中m取n排列组合实现 #### 一、背景介绍 在计算机...
阶乘与排列组合算法是计算机科学中基础但至关重要的概念,尤其在概率论、统计学、图论和算法设计等领域有着广泛的应用。阶乘(n!)是计算一个正整数n的所有小于等于n的正整数乘积,而排列组合则是解决如何从给定元素...
压缩包中的文件名为“Zuhe”,可能是实现组合排列算法的Java源代码文件。通过查看这个文件,我们可以了解具体的实现细节,包括使用的数据结构、递归或非递归的策略,以及如何处理边界条件等。 总的来说,组合排列是...
在java数组排列组合问题的应用中,我们可以将其应用于面试或笔试中,多次遇到以下四个关于排列组合的手撕算法,可以用统一的模板实现,如下所示: * 无重复元素的数组,求组合 * 有重复元素的数组,求组合 * 无重复...
总的来说,理解和掌握排列组合的算法及其在源代码中的实现是编程能力的重要组成部分。通过递归和分治策略,我们可以有效地解决这些问题,并且在实际项目中应用这些概念,如优化搜索路径、生成所有可能的解决方案等。
在编程领域,组合数学是一种非常重要的理论基础,它在解决许多问题时,如计数、概率计算、算法设计等,都发挥着关键作用。而生成排列是组合数学中一个具体的子话题,它涉及到如何系统地生成一个集合的所有排列。在这...