コードを挿入する機能を試してみてください.コードは再帰的に実現される組み合わせと全ソートです.


public class combineandsort {
	public static void combine(int a[],int nlen,int m,int out[]){
		if(m==0){
			/*
			for(int i=0;i=m;i--){
				out[m-1]=a[i-1];
				combine(a,i-1,m-1,out);
			}
		}
	}
	
	public static void allsort(int a[],int begin,int end){
		if(begin==end){
			for(int i=0;i

その名の通り、組み合わせはM個の数の中からN個の数がどれだけあるかを選ぶ組み合わせであり、例えば1,2,3個の数の中から2個の数を選ぶ組み合わせは12,23,13であり、順序を考慮しない.全配列はN個の数で順序を考えると何種類の出力が可能かということです.
M個の数からN個の数を選択し,順序を考慮して出力することを先に組み合わせて並べ替える.
全配列:配列の1位を順番に後ろの数桁に交換し、2位の3位に戻って最後の1位になる.なお、iビット目は1ビット目に交換され、可能な限り出力された後、iビット目に戻す.
組合せ:outは出力配列であり、nはout配列の中に数桁の数字がなく、最後のビットから再帰し、交換することなく、元の配列の最後のビットをout 1位に直接与え、最後のビットから前に再帰する.