java排列组合算法代码实现

原文:java排列组合算法代码实现

源代码下载地址:http://www.zuidaima.com/share/1550463479024640.htm

java排列组合算法,有需要研究的童鞋可以下载,运行结果如下:

package com.zuidaima.test;
/**
*@author www.zuidaima.com
**/
public class Pailie {
	 public static void main(String[] args) {
	        int[] ia = {1, 2, 3, 4,5,6,7,8,9,10};
	        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 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);
	            }
	        }
	    }
}
时间: 2024-10-17 19:07:08

java排列组合算法代码实现的相关文章

java桶式排序算法代码下载

原文:java桶式排序算法代码下载 代码下载地址:http://www.zuidaima.com/share/1550463272176640.htm 桶式排序: * 桶式排序不再是基于比较的了,它和基数排序同属于分配类的排序, * 这类排序的特点是事先要知道待排 序列的一些特征. * 桶式排序事先要知道待排 序列在一个范围内,而且这个范围应该不是很大的. * 比如知道待排序列在[0,M)内,那么可以分配M个桶,第I个桶记录I的出现情况, * 最后根据每个桶收到的位置信息把数据输出成有序的形式.

c# 排列组合算法

//排列组合 public class FullArrange { /// <summary> /// 排列组合 /// </summary> /// <param name="str">字符串</param> /// <param name="splitStr">分割的符号,比如";"</param> /// <returns></returns>

排列组合算法

实现组合算法C(n,k),可以用递归实现: python代码: 1 import copy #实现list的深复制 2 3 def combine(lst, l): 4 result = [] 5 tmp = [0]*l 6 length = len(lst) 7 def next_num(li=0, ni=0): 8 if ni == l: 9 result.append(copy.copy(tmp)) 10 return 11 for lj in range(li,length): 12 t

字符串排列组合算法

第二个算法是我笔试题遇到的,当时没有做出来,在网上看到别人写的算法,感觉太精妙了,就在这里分享出来. 全排列 所谓全排列,就是打印出字符串中所有字符的所有排列.例如输入字符串abc,则打印出 a.b.c 所能排列出来的所有字符串 abc.acb.bac.bca.cab 和 cba . #include<stdio.h> #include<string.h> static int number=0; void Swap(char *a ,char *b) { char temp =

c语言中一种典型的排列组合算法

c语言中的全排列算法和组合数算法在实际问题中应用非常之广,但算法有许许多多,而我个人认为方法不必记太多,最好只记熟一种即可,一招鲜亦可吃遍天 全排列: #include<stdio.h> void swap(int *p1,int *p2) { int t=*p1; *p1=*p2; *p2=t; } void permutation(int a[],int index,int size) { if(index==size) { for(int i=0;i<size;i++) print

java全组合算法

public static void combination(int[] s) { if (s.length == 0) { return; } int len = s.length; int n = 1 << len; // 从1循环到2^len-1 for (int i = 1; i < n; i++) { StringBuffer sb = new StringBuffer(); // 查看第一层循环里面的任意一种取值当中的哪一位是1[比如ab,011], 如果是1,对应的字符就存

排列组合的代码总结篇

#include <iostream> #include <vector> using namespace std; void my_swap(vector<char> &a,int i,int j){ int temp=a[i]; a[i]=a[j]; a[j]=temp; } vector<char> v; int n; void printPremutationRepeat(int pStart,vector<char> temp)

js多个(N)个数组的的元素组合排序算法,多维数组的排列组合或多个数组之间的排列组合

现在有一批手机,其中颜色有['白色','黑色','金色','粉红色']:内存大小有['16G','32G','64G','128G'],版本有['移动','联通','电信'],要求写一个算法,实现[['白色','16G','移动'], ['白色','16G','联通'] ...]这样的组合,扩张,如果后面还有参数,比如再加一个['国行','港版','美版'],不改程序一样可以执行! 通过上面规律可以发现这个算法就是:一个数组里面包含若干个数组,进行组合 算法代码写法一: // 执行组合排列的函数

【程序员眼中的统计学(5)】排列组合:排序、排位、排

排列组合:排序.排位.排 作者 白宁超 2015年10月15日18:30:07 摘要:程序员眼中的统计学系列是作者和团队共同学习笔记的整理.首先提到统计学,很多人认为是经济学或者数学的专利,与计算机并没有交集.诚然在传统学科中,其在以上学科发挥作用很大.然而随着科学技术的发展和机器智能的普及,统计学在机器智能中的作用越来越重要.本系列统计学的学习基于<深入浅出统计学>一书(偏向代码实现,需要读者有一定基础,可以参见后面PPT学习).正如(吴军)先生在<数学之美>一书中阐述的,基于统