順列
問題の説明
そこ財のn個の種類があり、各項目の番号を知っています。M選択した項目、そこからの置換の必要数。例えば、そこに2つの項目がA、Bがあり、その数は「AB」、「BA」二種類に配置されている選択項目から1、2です。
入力
各グループは、2本のデータ入力ラインを有し、最初の行は二つの数字であるN、M(1 <= M、N <= 10)、アイテムの数を示し、2行目の数を有するN、アイテムの数を示します。
出力
データ出力装置に対応する番号。(任意の動作が2 ^ 31を超えません)
サンプル入力
2 2 1 1
サンプル出力
2
ACコード
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 整数 N、M、S、[ 11 ]。 ボイド DFS(INT X){ もし(x == 0 ){ S ++。リターン; } ため(INT iは= 0、I <N; ++ i)が{ 場合([I]){ [I] - 。 DFS(X - 1 )。 [I] ++ ; } } } int型のmain(){ 一方(CIN >> N >> M) { S = 0 。 以下のために(INT iが= 0、I <N; I ++ ) { scanf関数(" %のD "、および[I])。 } DFS(M)。 coutの << S << てendl; } 戻り 0 。 }
DFSの場合は、唯一のバックトラックを必要としない解決策を見つけます
あなたが必要なすべての解決策を見つけるために必要がある場合