Pythonでコインと数量を使用して作成できる個別のコインの合計数を見つけるプログラムはありますか?
コインと呼ばれる値のリストと、同じ長さの数量と呼ばれる別のリストがあるとします。 i番目のコインの価値はcoins[i]であり、現在、i番目のコインの数量[i]の数があります。これらのコインの空でないグループを使用して取得できる個別のコインの合計値の数を見つける必要があります。
したがって、入力がコイン=[1、2、5]数量=[1、2、1]のようである場合、次の個別のコイン合計[1] =1、[2]を持つことができるため、出力は10になります。 =2、[1,2] =3、[2,2] =4、[5] =5、[1,5] =6、[2,5] =7、[1,2,5] =8 、[2,2,5] =9、[1,2,2,5]=10。
これを解決するには、次の手順に従います。
関数rec()を定義します。これには私がかかります、res
if i is same as size of coins , then return for k in range 0 to quantities[i] + 1, do cur := res + k * coins[i] insert cur into fres rec(i + 1, cur) From the main method, do the following: fres := a new set rec(0, 0) return size of fres - 1
例
class Solution: def solve(self, coins, quantities): def rec(i, res): if i == len(coins): return for k in range(0, quantities[i] + 1): cur = res + k * coins[i] fres.add(cur) rec(i + 1, cur) fres = set() rec(0, 0) return len(fres) - 1 ob = Solution() coins = [1, 2, 5] quantities = [1, 2, 1] print(ob.solve(coins, quantities))
入力
[1, 2, 5], [1, 2, 1]
出力
10
-
可能な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の最後に挿入します
-
Pythonで収集できるコインの最大数を見つけるためのプログラム
各セルにいくつかのコインが格納されている2Dマトリックスがあるとします。 [0,0]から始めて、右または下にしか移動できない場合、右下隅で収集できるコインの最大数を見つける必要があります。 したがって、入力が次のような場合 1 4 2 2 0 0 0 5 [1、4、2、2、5] のパスをたどると、出力は14になります。 これを解決するために、次の手順に従います- 範囲1からAの行数までのrについては、次のようにします A [r、0]:=A [r、0] + A [r-1、0] 範囲1からAの列数までのcにつ