URL:URL:https://www.acwing.com/problem/content/96/
質問の意味:
$ 1から$ $ $ N-N- $ $このランダムにスクランブル後の整列整数、すべての可能なシーケンスの出力。
ソリューション:
実際には、ライン上で直接使用$次の順列$、私たちは再帰を使用して、この時間は、我々はその後、$ 1 $からすべてのスタート各層マークを直接使用$ VIS数がアクセスされたかどうかを$配列レコード、何の選挙がない場合は、その後、ときにすることができ、再帰的に、$ VIS $マークの背中を排除するために、$ VIS $をマーク。
ACコード:
#include <ビット/ STDC ++。H> 名前空間stdを使用。 あなたは、CNTを[15] STA; INT力[15]。 int型のn; 無効DFS(int型のdiv) { (DIV == N)の場合 { (++ I; I <N I = 0の整数)のために printf( "%D%C"、STA [i]は、I == N - 1 '\ N'? '「)。 リターン; } 以下のために(INT I 1 =; I <= N; ++ I) { (もし!VIS [I]) { [I] = 1図です。 それは= [CNT ++] iのです。 DFS(DIV + 1)。 --cnt; [I] = 0図です。 } } リターン; } メインint型() { scanf関数( "%のD"、&N); DFS(0)。 0を返します。 }