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

Pythonでk個のバッグにn個のキャンディーを配布する方法の数を数えるプログラム


キャンディーを入れなければならないキャンディーとバッグがn個あるとします。各バッグに少なくとも1つのキャンディーが含まれるように、キャンディーを配布できる方法の数を見つける必要があります。このシナリオのすべてのキャンディーはユニークであるため、キャンディーをバッグに入れて配布する可能性のあるすべての方法を数える必要があります。

したがって、入力がn =3、k =2の場合、出力は3になります。

キャンディーはこのように置くことができます-

(1, 2), (3)
(1) , (2, 3)
(2), (1, 3)

これを解決するには、次の手順に従います-

  • dp:=値1で初期化されたサイズnxnの行列

  • 2からnの範囲のcについては、次のようにします

    • 1から(c、k)の最小値までの範囲のbについては、次のようにします

      • dp [c、b]:=dp [c-1、b-1] + dp [c-1、b] *(b + 1)

  • dp [n-1、k-1]

    を返します

理解を深めるために、次の実装を見てみましょう-

def solve(n, k):
   dp = [[1] * n for _ in range(n)]
   for c in range(2, n):
      for b in range(1,min(c,k)):
         dp[c][b] = dp[c-1][b-1] + dp[c-1][b] * (b+1)
   return dp[n-1][k-1]

print(solve(3, 2))

入力

3, 2

出力

3

  1. Pythonで行列内の囲まれた島の数を数えるプログラム

    バイナリ行列があるとします。ここで、1は土地を表し、0は水を表します。私たちが知っているように、島は周囲が水に囲まれているグループ化された1のグループです。完全に囲まれた島の数を見つける必要があります。 したがって、入力が次のような場合 3つの島があるため、出力は2になりますが、そのうちの2つは完全に囲まれています。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これにはi、jが必要です iとjが行列の範囲内にない場合、 Falseを返す matrix [i、j]が0と同じ場合、 Trueを返す matrix [i、j]:=0 a:=df

  2. 指定された文字列のセットを使用して母音の数をカウントするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列が与えられたので、与えられた文字列のセットを使用して母音の数を数える必要があります。 ここでは、文字列全体をトラバースして、各文字が母音であるかどうかを確認し、カウントをインクリメントします。 次に、以下の実装の概念を観察しましょう- 例 def vowel_count(str):    count = 0    #string of vowels    vowel = "aeiouAEIOU"   &nbs