ACwing94再帰的な列挙型の配列DFS

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を返します。
}

 

 

 

 

おすすめ

転載: www.cnblogs.com/Aya-Uchida/p/11872623.html