分治法实现1-N的数字按字典序全排列组合 Java语言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分治法实现1-N的数字按字典序全排列组合 Java语言相关的知识,希望对你有一定的参考价值。

package 分治法;


import java.util.Arrays;
/*
 * 将数字 1 - n进行全排列  按字典序从小到大输出
 * 如  1 - 3  
 * 	123 132 213 231 312 321
 */
class GenerateP{
	
	private int n;  //  求 1-n所有数字的全排列
	private final int maxn = 110;//最多可排列组合的长度  1-100
	private boolean [] hashTable;
	private int [] p;
	
	public GenerateP(int n) {
		// TODO Auto-generated constructor stub
		this.n = n;
		hashTable = new boolean[maxn];
		p = new int [maxn];
		Arrays.fill(hashTable, false);
		Arrays.fill(p, 0);
	}
	public void generatep(int index){
		if(index == n + 1){
			for(int i = 1; i <= n; i++){
				System.out.print(p[i]);
			}
			System.out.println();
			return;
		}
		
		for(int x = 1; x <= n; x++){
			if(hashTable[x] == false){
				p[index] = x;
 				hashTable[x] = true;
				generatep(index + 1);
				hashTable[x] = false;
			}
		}
	}
}
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GenerateP generateP = new GenerateP(3);
		generateP.generatep(1);

	}

}

  

以上是关于分治法实现1-N的数字按字典序全排列组合 Java语言的主要内容,如果未能解决你的问题,请参考以下文章

全排列 字典序全排列

java字典序全排列

按字典顺序排列 1...n 的 k 的组合,算法太慢

递归基础_全排列(一般递推实现)

排列的字典序问题(Java)

Lotto(DFS处理)