多个数组进行全排列

package com.huang.solution;

import java.util.ArrayList;
import java.util.Arrays;
/**
 * Created by huang on 17-4-9.
 */
public class QuanPaiLie {

    /**
     * 多个数组全排列
     * 思路:数字的第一位是第一个数组中的一个数,下一个数字为下一个数组中的一个数
     *      以此类推采用递归
     * @param args
     */
    public static void main(String[] args) {
        int[][] array = new int[][]{{1, 2, 3,5}, {4, 5, 6}, {7, 8, 9,10}};
        int[] num = new int[array.length];
        sort(array,array.length, 0, num);
    }

    public static void sort(int[][] array, int length, int index, int[] num) {
        if (index == length ) {
            String s = Arrays.toString(num);
            System.out.println(s);
            return;
        }

        for (int j = 0; j < array[index].length; j++) {//数组中的每一位遍历一次
            num[index] = array[index][j];
            sort(array,length, index+1,num);
        }
    }
}
时间: 2024-11-03 12:44:06

多个数组进行全排列的相关文章

数组的全排列

1.问题背景 学过数学的人都知道,全排列的意思是什么.现在如何用计算机的编程语言实现数组的全排列呢? 数组的全排列可用于求解八皇后问题,具体参见:全排列解决八皇后问题.与此同时,全排列经常会出现在笔试或者面试,如求字符串的全排列.之所以那它作为考题,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平.所以,掌握它很重要. 2.全排列的递归实现 2.1求解思路 全排列表示把集合中元素的所有按照一定的顺序排列起来,使用P(n, n) = n!表示n个元素全排列的个数

我的算法学习(一)----数组的全排列

看见别人写出来美丽有用的代码,最终下定决心好好学习算法,在这里记录下自己学习的成果. 前两天看到数组的全排列,于是自己照着别人的想法实现了一下,感觉自己理解了,有点小高兴,记载一下. /* * 数组的全排列*/ public class myAllSort { public static void sort(int[] number,int start,int end){ int temp; // 假设发现数组对掉元素到了最后一个,那么就输出,证明已经符合要求 if(start==end) {

求数组的全排列

给定一个数组,求出全排列的情形? 算法描述: /** - 给定数组 3 4 6 9 8 7 5 2 1 如何求出紧挨着的下一个排列? step1:从后面扫描,找到第一个下降的数(6),并记录: step2:依然从后面扫描,找到第一个大于step1(6)的数7,并记录: step3:交换step1(6).step2(7):=>3 4 7 9 8 6 5 2 1 step4:在step(7)之后的数字,首尾互换 =>3 4 7 1 2 5 6 8 9即为所求 */ static int count

(全排列)数组的全排列问题

问题一:https://www.nowcoder.com/practice/f0069cfcd42649e3b6b0c759fae8cde6?tpId=46&tqId=29148&tPage=3&rp=3&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking 这个题目意思是给定一个排列数组,然后要求出下一个排列的数组.比如说1234->1243    1243->1324等等.这个题目是一个全排列的题目,但是

产生一个数组的全排列,非冗余 C++实现

finds all the permutaitons of n elements, repeated elements are allowed and do not create redundant permutations. 蛋白质组学Ms-TopDown源代码auxfun.cpp中一个函数,看了很久没有注释,有点晕,但是以后可以直接拿来使用. 产生原始数组元素的全排列,但是要求是非冗余的,也就是说原始数组可以有重复的元素,比如{2,2,2}这个数组,只有一种排列,2这个元素必须按相同处理,只

[转载]数组的全排列问题

 申明:转自http://blog.csdn.net/wencheng2998/article/details/5971194 1 #include <iostream> 2 using namespace std; 3 int cnt = 0;//累计全排列的总数 4 5 6 void swap(char *a, char *b) 7 { 8 int temp; 9 temp = *a; 10 *a = *b; 11 *b = temp; 12 } 13 //k表示从下表为k的元素开始排列,

javascript数组元素全排列

多个数组(数量不定)例如三个数组 {a,b} {1,2} {d}排列组合后为a,1,da,2,db,1,db,2,d是js的算法哦 var arr = [["a","b"],["1","2"],["d"]]; var sarr = [[]]; for (var i = 0; i < arr.length; i++) {     var tarr = [];     for (var j = 0; j 

字符串数组的全排列——数组

题目描写叙述: 输入一个字符串,打印出该字符串中字符的全部排列. 解题思路: 參考july大神的编程艺术系列.使用字典排序.求当前排列的下一个字典序列.即全排列的下一个排列. 所谓字典序列,即给定两个偏序集A和B,(a,b)和(a′,b′)属于笛卡尔集 A × B.则字典序定义为 (a,b) ≤ (a′,b′) 当且仅当 a < a′ 或 (a = a′ 且 b ≤ b′). 所以给定两个字符串.逐个字符比較,那么先出现较小字符的那个串字典顺序小.假设字符一直相等.较短的串字典顺序小. 比如:a

字符数组的全排列

package structure; import org.junit.Test; /*递归全排列*/ public class perm { public void perm1(char[] a,int start){ if(start==a.length-1){ for(int i=0;i<a.length;i++){ System.out.print(a[i]); } System.out.println(); }else { for(int i=start;i<a.length;i++