java 实现 排列 组合
2013-02-06 16:38
501 查看
import java.util.ArrayList; /** * * * permutation and combination * * @author Administrator */ public class Pac { Pac(String str) { this.str = str; } String str;//源字符串。 String state;//c or a 状态 /* * 组合数 */ public void permutation(int c) { state="a"; alc = new ArrayList<String>(); ala = new ArrayList<String>(); c(str, c); for (String s : alc) { a(s, c); }System.out.println("共计" + ala.size() + "个 组合"); for (String s : ala) { System.out.println(s); } System.out.println("共计" + ala.size() + "个 组合"); } ArrayList<String> ala = new ArrayList<String>();//返回用的al void a(String str, int c) { filla(str, c, ""); } void filla(String str, int c, String pre) { if (c <= 0) { System.out.println("选择的个数太少必须大于0当前是" + c); return; } if (c == 1) { ala.add(pre + str.charAt(0)); return; } for (int i = 0; i < str.length(); i++) { filla(str.substring(0, i) + str.substring(i + 1, str.length()), c - 1, pre + str.charAt(i));//正常 } } /* * 排列数 */ public void combination(int c) { state="c"; alc = new ArrayList<String>(); c(str, c); for (String s : alc) { System.out.println(s); } System.out.println("共计" + alc.size() + "个 排列"); } /* * 内部组合 */ private ArrayList<String> c(String str, int c) { if (c > str.length()) { System.out.println("数组内部出错选择大于数组长度"); return null; } fillc(str, c, ""); return null; } ArrayList<String> alc = new ArrayList<String>();//返回用的al void fillc(String str, int c, String pre) { if (c <= 0) { System.out.println("选择的个数太少必须大于0当前是" + c); return; } if (c == 1) { for (char s : str.toCharArray()) { alc.add(pre + s); } return; } fillc(str.substring(1, str.length()), c - 1, pre + str.charAt(0));//正常 //重填 if (c <= str.length() - 1) { fillc(str.substring(1, str.length()), c, pre); } } public static void main(String[] args) { Pac p = new Pac("xyz"); //p.combination(3); p.permutation(3); } }
。。。。。
vzw wvz wzv zvw zwv vxy vyx xvy xyv yvx yxv vxz vzx xvz xzv zvx zxv vyz vzy yvz yzv zvy zyv wxy wyx xwy xyw ywx yxw wxz wzx xwz xzw zwx zxw wyz wzy ywz yzw zwy zyw xyz xzy yxz yzx zxy zyx 共计15600个 组合 成功构建 (总时间: 5 秒)
相关文章推荐
- 排列与组合的Java递归实现 (参考)
- 排列组合算法 的java实现
- 字符串数组元素排列与组合的Java递归实现
- 高效率的排列组合算法(java实现)
- Java实现排列组合算法
- 字符串全排列与全组合的递归实现-Java版
- 排列组合数列的java实现
- 使用java实现数学中的排列组合公式A和C以及阶乘
- JAVA实现排列组合,简单的一比
- java实现排列组合
- java 高效率的排列组合算法(java实现)
- java实现字符串排列组合问题
- 针对较大基数的排列组合算法Java实现类(n选m)
- Java实现排列组合--递归
- java 排列组合(递归实现)
- JAVA 实现全排列和组合
- 排列组合算法总结(含Java实现)
- 用递归实现排列组合(java代码)
- 排列与组合的Java递归实现
- 全排列和组合-JAVA版本实现