package com.louisgeek.price;/*** 排列和组合算法* @author Administrator**/
public class CaseTest {public static void main(String[] args) {int[] ia = { 1, 2, 3, 4, 5 };int n = 4;System.out.println("排列结果 : ");permutation(ia, n);System.out.println("组合结果 : ");combination(ia, n);}public static void permutation(String s, int[] ia, int n) {if (n == 1) {for (int i = 0; i < ia.length; i++) {System.out.println(s + ia[i]);}} else {for (int i = 0; i < ia.length; i++) {String ss = "";ss = s + ia[i] + "";// 建立没有第i个元素的子数组int[] ii = new int[ia.length - 1];int index = 0;for (int j = 0; j < ia.length; j++) {if (j != i) {ii[index++] = ia[j];}}permutation(ss, ii, n - 1);}}}public static void permutation(int[] ia, int n) {permutation("", ia, n);}public static void combination(int[] ia, int n) {combination("", ia, n);}public static void combination(String s, int[] ia, int n) {if (n == 1) {for (int i = 0; i < ia.length; i++) {System.out.println(s + ia[i]);}} else {for (int i = 0; i < ia.length - (n - 1); i++) {String ss = "";ss = s + ia[i] + ", ";// 建立从i开始的子数组int[] ii = new int[ia.length - i - 1];for (int j = 0; j < ia.length - i - 1; j++) {ii[j] = ia[i + j + 1];}combination(ss, ii, n - 1);}}}
}

输出结果:

排列结果 :
1234
1235
1243
1245
1253
1254
1324
1325
1342
1345
1352
1354
1423
1425
1432
1435
1452
1453
1523
1524
1532
1534
1542
1543
2134
2135
2143
2145
2153
2154
2314
2315
2341
2345
2351
2354
2413
2415
2431
2435
2451
2453
2513
2514
2531
2534
2541
2543
3124
3125
3142
3145
3152
3154
3214
3215
3241
3245
3251
3254
3412
3415
3421
3425
3451
3452
3512
3514
3521
3524
3541
3542
4123
4125
4132
4135
4152
4153
4213
4215
4231
4235
4251
4253
4312
4315
4321
4325
4351
4352
4512
4513
4521
4523
4531
4532
5123
5124
5132
5134
5142
5143
5213
5214
5231
5234
5241
5243
5312
5314
5321
5324
5341
5342
5412
5413
5421
5423
5431
5432
组合结果 :
1, 2, 3, 4
1, 2, 3, 5
1, 2, 4, 5
1, 3, 4, 5
2, 3, 4, 5

java排列和组合算法相关推荐

  1. java 实现组合_用Java实现排列、组合算法

    组合个数的计算公式如下: 那么,计算排列或组合的数量,通过上面的公式就很容易就算出来了,其Java的实现如下: /** * 计算阶乘数,即n! = n * (n-1) * ... * 2 * 1 * ...

  2. 算法之排列与组合算法

    1. 前言 本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等. 2. 排列算法 常见的排列算法有: (A)字典序法 (B)递增进位制数法 (C)递减进位制数法 (D)邻 ...

  3. 通用的非递归排列和组合算法[附源码]

    动机 Apache Math包中有很多关分布的算法,但是没有找到排列组合相关的算法.索性自己写一个.排列组合可以分两个算法: 组合算法,就是在一个数组中取出m(小于等于数组的长度 n)个对象,有多少中 ...

  4. POJ 3278 Catch That Cow java 二分法 加 组合算法

    原题: http://poj.org/problem?id=3278 二分法一年前就写出来了,但是提交代码出现Wrong Answer,不知道什么问题,自己跑随机测试又没问题,一年之后提交,竟然过了, ...

  5. c语言排列组合的函数,c语言排列组合算法 排列和组合算法的实现方法_C语言经典案例...

    想了解排列和组合算法的实现方法_C语言经典案例的相关内容吗,在本文为您仔细讲解c语言排列组合算法的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:c语言排列组合算法,下面大家一起来学习吧. ...

  6. java 获取排列组合_Java获得一个数组的指定长度排列组合算法示例

    本文实例讲述了Java获得一个数组的指定长度排列组合算法.分享给大家供大家参考,具体如下: package demo; import java.util.Stack; /** * JAVA获得一个数组 ...

  7. java实现排列组合算法

    组合算法 网上已经能够搜索到比较多的资料,大部分都是递归实现,因为递归实现是最优解,而且代码易于理解,递归实现可以参考这篇博客​​​​​​​:组合算法Java实现_freedom__bird的博客-C ...

  8. java 实现组合_排列组合算法(JAVA实现)

    组合算法实现 从m个数里面取n个数的算法.最容易理解的就是递归,但是其效率太低. 实现方法一: // 组合算法 // 本程序的思路是开一个数组,其下标表示1到n个数,数组元素的值为1表示其下标 //  ...

  9. java 排列组合_java 高效率的排列组合算法(java实现)

    package BeanUtil; import java.util.ArrayList; import java.util.List; import com.work.core.exception. ...

最新文章

  1. 系统分析与设计 实验一用例模型
  2. python网页编程测试_李亚涛:python编写友情链接检测工具
  3. DCMTK:DcmItem类的测试程序
  4. fork、vfork、clone
  5. 前端学习(1730):前端系列javascript之发布窗口布局上
  6. jQuery formValidator 表单校验插件4.1.1高仿网易邮箱注册页面(已发演示链接)
  7. oracle导数据不释放内存,关于ORACLE数据库delete后释放空间问题
  8. android 编译打包pdf,Android使用iText生成pdf文件
  9. nod32/ESET下載及更新
  10. word2016中的毕设论文——页眉页脚相关设置及页眉横线的删除
  11. 维基百科中文语料库训练word2vec模型和使用总结
  12. 【保研】-- 保研夏令营中线上面试注意事项
  13. Spring中AOP的Introductions使用介绍
  14. 分析Padavan的代码二
  15. 耐得住寂寞,坐得住板凳,也是一种能力。
  16. 一次从 APP 逆向到 Getshell 的过程
  17. 教程:晶莹剔透的水滴绘制过程
  18. Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题
  19. oracle文件头0号块损坏的处理
  20. 4、Reading Rasa Source Code —— Domain 解析

热门文章

  1. 解决真机识别为虚拟机,Sorry, this application cannot be run under a Virtual Machine
  2. JAVA征兵管理系统
  3. oracle character set mismatch,EntityFramework查询oracle数据库时报ora-12704: character set mismatch...
  4. 梦想经不起等待 -- 美文转载
  5. 程序猿 那些值得收藏的网站
  6. win7系统 修改默认管理员用户名administrator方法
  7. 「镁客·请讲」打造一台眼睛专属“跑步机”,鹰视菲诺是如何用AI拯救近视的?...
  8. 远程连接的电脑突然白屏了怎么办?
  9. QColor类的使用
  10. 【日常问题解决】docker 映射端口出错