徹底的な方法
//完全な配列の問題解決 //網羅方法 書式#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" は); }