動的プログラミング-効率的な通貨構成
4911 ワード
ダイナミックプログラミング技術
解決した問題の一部の答えをメモリに記録し、一度に計算した問題の再計算を回避する解決方法.
タワー
再帰関数を使用して小さな問題を呼び出し、大きな問題を解決します.
昇降方式
繰り返し文を使用して、まず小さな問題を解決し、解決した小さな問題を集中して大きな問題を解決します.
に質問
解決した問題の一部の答えをメモリに記録し、一度に計算した問題の再計算を回避する解決方法.
タワー
再帰関数を使用して小さな問題を呼び出し、大きな問題を解決します.
昇降方式
繰り返し文を使用して、まず小さな問題を解決し、解決した小さな問題を集中して大きな問題を解決します.
に質問
N種類の通貨があります.これらの通貨の個数を最小限に抑え、その価値の和をM元にしようとした.この場合、1つの通貨ごとにいくつか使用することができ、使用する通貨の構成は同じであるが、順序が異なる場合、同じ場合に区別することができる.
不可能な場合は-1を出力します.
入力例1
2 15
2
3
出力例1
5
入力例2
2 15
2
3
出力例2
5
💻 コード#コード# N, M = map(int, input().split())
d = [-1] * 10001
money = []
for i in range(N):
x = int(input())
money.append(x)
d[x] = 1
for i in range(1, M):
if d[i] != -1:
for j in money:
if d[i + j] == -1:
d[i + j] = d[i] + 1
else:
d[i + j] = min(d[i + j], d[i] + 1)
print(d[M])
デザイン
インベントリdには、インデックス値を作成できる通貨の数が格納される.初期化は-1であり、通貨を入力するたびにdの1に入れ、通貨リストに入れます.
リストdを巡回しながら、少なくとも−1または入力可能な通貨にすることができる数を格納する.
📝 整理する
これはいろいろな方法で解決した問題です.
以前は初めて思いついた方法で解けなくてもずっと掴んでいましたが、今回は解けない方法で、別の方法を探すことができます.
Reference
この問題について(動的プログラミング-効率的な通貨構成), 我々は、より多くの情報をここで見つけました
https://velog.io/@xxwb__/이것이-코딩-테스트다-다이나믹-프로그래밍-효율적인-화폐-구성
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
N, M = map(int, input().split())
d = [-1] * 10001
money = []
for i in range(N):
x = int(input())
money.append(x)
d[x] = 1
for i in range(1, M):
if d[i] != -1:
for j in money:
if d[i + j] == -1:
d[i + j] = d[i] + 1
else:
d[i + j] = min(d[i + j], d[i] + 1)
print(d[M])
デザイン
インベントリdには、インデックス値を作成できる通貨の数が格納される.初期化は-1であり、通貨を入力するたびにdの1に入れ、通貨リストに入れます.
リストdを巡回しながら、少なくとも−1または入力可能な通貨にすることができる数を格納する.
📝 整理する
これはいろいろな方法で解決した問題です.
以前は初めて思いついた方法で解けなくてもずっと掴んでいましたが、今回は解けない方法で、別の方法を探すことができます.
Reference
この問題について(動的プログラミング-効率的な通貨構成), 我々は、より多くの情報をここで見つけました
https://velog.io/@xxwb__/이것이-코딩-테스트다-다이나믹-프로그래밍-효율적인-화폐-구성
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(動的プログラミング-効率的な通貨構成), 我々は、より多くの情報をここで見つけました https://velog.io/@xxwb__/이것이-코딩-테스트다-다이나믹-프로그래밍-효율적인-화폐-구성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol