Python
 Computer >> コンピューター >  >> プログラミング >> Python

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

  1. 可能な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の最後に挿入します

  2. 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につ