あなたが言ったように、これはとても素晴らしい解決策です。コードは、各コインの宗派を伴う1〜200の各繰り返しを通じてそれ自体に基づいています。
case_num配列は、最初は[1、0、0、0、0、0、0、0、0]で構成されています。
これらの数値(最初の1以外の)は、これまでに繰り返したP_LISTのコインを使用して、指定された合計(数のインデックスで表される)まで構築できる方法の数です。
P_LISTの最初のコインは1です。したがって、1がインデックス内に収まる場合、前のインデックスで値を取得し、現在のインデックスに追加します。これは、25に到達するための5つの既知の方法があり、サイズ1のコインを見つけたばかりである場合、26に到達するための5つの方法もあります。 。
したがって、1を繰り返した後、[1、1、1、1、1 ... 1、1]になります。
これで、コインで上に移動します。今回は2のコインを使用しています。プロセスをさらに1時間歩きましょう。 2がインデックスよりも少ない場合、現在のインデックスの前のインデックスにアクセスする方法の数を追加します。
たとえば、2つはインデックス1内に収まりませんが、インデックス2に収まります。したがって、0から2に到達する新しい方法を作成しただけで、0に到達できるすべての方法を実行して、現在のインデックスに追加します。インデックス27では、インデックス内に2つに適合するので、25に到達して27に追加できる方法の数を取得します(25 + One 2 Coinに到達する方法のすべて) +(すべての方法)サイズ2のコインがあることを知る前に、27に達する必要がありました。
したがって、2を繰り返した後、[1、1、2、2、3、3、4、4]になります。
あなたがまだ問題を抱えているなら、プログラム全体を試してみようとする価値があるかもしれません(おそらく200ではなく50のように減少したかもしれません)。