Pythonでインドの宗派を使用してnR.sを取得できる方法の数を見つけるためのプログラム
金種の硬貨が限られているとします(1ポンド、2ポンド、5ポンド、10ポンド)。合計で合計£nになる方法をいくつ見つける必要がありますか?サイズ4の配列カウントがあります。ここで、count [0]は1ポンドのコインを示し、count[1]は2ポンドのコインを示します。
したがって、入力がn =25 count =[7,3,2,2]の場合、出力は9になります。
これを解決するには、次の手順に従います-
- denom:=[1,2,5,10]
- A:=サイズ(n + 1)の配列で、0で埋めます
- B:=Aからの新しいリスト
- 0から(count [0]およびnの最小値)の範囲のiの場合、do
- A [i]:=1
- 1〜3の範囲のiについては、
- 範囲0からcount[i]のjの場合、実行
- 0〜n +1の範囲のkの場合-j*denom [i]、do
- B [k + j * denom [i]]:=B [k + j * denom [i]] + A [k]
- 0〜n +1の範囲のkの場合-j*denom [i]、do
- 0からnの範囲のjについては、
- A [j]:=B [j]
- B [j]:=0
- 範囲0からcount[i]のjの場合、実行
- return A [n]
例
理解を深めるために、次の実装を見てみましょう-
denom = [1,2,5,10] def solve(n, count): A = [0] * (n + 1) B = list(A) for i in range(min(count[0], n) + 1): A[i] = 1 for i in range(1, 4): for j in range(0, count[i] + 1): for k in range(n + 1 - j *denom[i]): B[k + j * denom[i]] += A[k] for j in range(0, n + 1): A[j] = B[j] B[j] = 0 return A[n] n = 25 count = [7,3,2,2] print(solve(n, count))
入力
25, [7,3,2,2]
出力
9
-
PythonのAjobシーケンスからシーケンスを選択する方法の数を見つけるためのプログラム
Ajob言語と呼ばれる奇妙な言語があるとします。文字数は無限です。私たちはこの言語でn語を知っています。最初の単語は1文字の長さで、2番目の単語は2文字の長さというように続きます。そして、単語内のすべての文字は一意です。 n個の単語のいずれかを選択し、そこからサブシーケンスを形成するとします。サブシーケンスの長さは、元の単語の長さよりk短くする必要があります。たとえば、選択した単語の長さがLの場合、サブシーケンスの長さは(L --k)になります。長さがkより小さい単語がある場合は、その単語を選択しないでください。また、2つのサブシーケンスは、長さが異なる場合、または同じ位置に異なる文字が含まれ
-
可能なBSTの数を見つけるプログラムは、Pythonのn個の異なるノードを使用して生成できます
数nがあるとします。 [1,2、...、n]のような数がある場合、これらのn個の値を使用して形成できるBSTの数を数える必要があります。答えが大きすぎる場合は、結果を10 ^ 9+7で変更します。 したがって、入力がn =3の場合、出力は14になります。 これを解決するために、次の手順に従います a:=値が[0、1]のリスト m:=10 ^ 9 + 7 max_n:=1000 2からmax_n+1の範囲のkについては、 (1 +リストのすべての要素の合計(a [i] * a [k --i] for all i in range(1、k)))modmをaの最後に挿入します