トピック:
ただ、タイトルを見て、タイムアウトを知ることが可能であるが、すべての可能性を使い果たし、DFSを使用したと考えるのが自然であるが、それでも...本当に残業行います
その問題に対する解決策、特に明確な動的プログラミング(ボトムアップ)を読み取ります
分析:
F(i)の定義が必要とされる組成物Iのドルの最小数を表します
だから、
F(0)= 0
究極の目標は、F(量)を得ることです
異なる状態間の遷移式である F(I)=分(F.(CJ-I))+ 1、0 = <J <coins.size() 硬貨の金種の値のj番目Cjの代表、そこIもし-cj <0、単に無視
F.(I)を探しているときに、唯一のあなたは私が知られており、それが計算できるようになるまで、各F(I-Cjの)、およびF(I-Cjのを)知っている必要があります
コード:
クラス解決{ パブリック: INT coinChange(ベクトル< INT >&コイン、int型の量){ ベクトル< INT > F(量+ 1 、量)。 F [ 0 ] = 0 ; 以下のために(INT iが= 1 ; I <=量; I ++ ){ int型 CUR = INT_MAX。 用(INT J = 0 ; J <coins.size(); J ++ ){ 場合(I-コイン[J] < 0) 続行; そう であれば(F [I-コイン[J]]> = 0 && CUR> F [I-コイン[J])CUR = F [I-コイン[J]] + 1 。 } F [I] = CUR == INT_MAX - ?1 :CUR。 } 戻りF [量]。 } }。