完全な配列の問題を解決します

徹底的な方法

//完全な配列の問題解決 
//網羅方法
書式#include <stdio.hに>
MAXN 10の#define
#defineのMaxSize 1000年
typedefは構造体{
	構造体{
		INT [MAXN]。
		int型メートル;
	}データ【のMaxSize]。
	int型のトップ。
} StackType。
ボイド挿入{([]、INT M、INT J、整数kをINT)
	私はint型。
	(; I> J; i-- I = M + 1)のために
		[I] = [I-1];
	[J] = K。
}
ボイドDISP {([]、INT mをINT)
	私はint型。
	以下のための式(I = 1; I <= M; I ++)
		printf( "%dの"、[I])。
	printf(」「);
}
ボイドコピー(INT M、] [、] [INT BをINT){
	私はint型。
	以下のための式(I = 1; I <= M; I ++)
		B [I] = [I]。
}
INTパーマ(INT N)の{//出力完全な配列 -  1 
	int型J、M。
	INT B [MAXN]、C [MAXN]。
	StackType ST;
	st.top = -1;
	st.top ++;
	st.data [st.top] .A [1] = 1。
	st.data [st.top] .M = 1。
	しばらく(st.top!= -1){
		M = st.data [st.top] .M。
		{(M == N)の場合
			DISP(st.data [st.top] .A、N)。
			st.top--;
		}
		そうしないと{
			コピー(st.data [st.top] .A、C、M);
			st.top--;
			{(J ++; J <= M + 1、J = 1)のために
				コピー(C、B、M)。
				インサート(B、M、J、M + 1)。
				st.top ++;
				コピー(B、st.data [st.top] .A、M + 1)。
				st.data [st.top] .M = M + 1です。 
			}
		}
	} 
}
INTメイン(){
	INT、N = 3。
	printf( "1〜%D全体構成:"、N)。
	PERM(N)
	printf( "\ n" は);
} 

  

おすすめ

転載: www.cnblogs.com/Hqx-curiosity/p/12147319.html