効率的にお金を出す方法。たとえば、100 $の銀行紙幣1枚、50 $の銀行券1枚、30 $の2枚の紙幣があります。 110 $要約を達成するために50 $と30 $の2つが必要であると判断する方法。特定の合計の銀行券の組み合わせを見つける
換言すれば、30ドル(銀行券2枚)、50ドル(銀行券1枚)、100ドル(銀行券1枚)の固定番号があります。問題は、特定の合計を得るために取るべき銀行券を決定することです(例えば、110 $)。この場合、30ドル紙幣2枚と50ドル紙幣1枚を払う必要があります。
ここでグリーディアルゴリズムを使用することはできません。最初に100 $銀行券を取ると、110 $要約を達成できないためです。
紙幣を保管するために使用するデータ構造はどれですか?単純に各銀行券タイプの数量、または各銀行券を保管する配列でもよい。[100,50,30,30]
そして、特定の合計を得るために必要な銀行券を見つけるアルゴリズムとは何ですか?
通常、コインを使用していますが、多くの関連する質問があります。私は今正確な重複を見つけることができません。あなたは[検索](http://stackoverflow.com/search?q=algorithm+coins+combination)を試しましたか? –
一般化された、これはサブセット合計問題(https://en.wikipedia.org/wiki/Subset_sum_problem)です。標準解はO(2 ^(n/2))です。可能な擬似多項式解もあります。 – RBarryYoung