最少硬幣問題 動態規劃

來源:互聯網
上載者:User

http://acm.njupt.edu.cn/acmhome/problemdetail.do;jsessionid=C5F74A298747B3520DE77A677A8E057F?&method=showdetail&id=1221

 

/********************************************************************<br /> ** @file test.cpp<br /> ** @author liuke<br /> ** @date Fri Apr 22 23:50:50 2011<br /> ** @brief<br /> **************************動態規劃實現********************************<br /> 長度為m的數組f[1...m]中存放一系列子結果,即f[i]為要湊的錢數為i時<br /> 所需的最少硬幣數,則c[m]為所求;<br /> 當要找的錢數i(1<i<m)與當前所試探的硬幣面值k相等時,結果為1,即c[i]=1<br /> 當i大於當前所試探硬幣面值k時,若f[i]為0,即還未賦過值,且c[i-k]不為0,<br /> 即從i元錢中刨去k元後剩下的錢數可以找開, 則c[i]=c[i-k]+1<br /> 若f[i]不為0,即已賦過值,則f[i]為f[i-k]+1和f[i]中較小的<br /> **<br /> **@version Copyright (c) 2010,河南理工大學-信管08-三班<br /> *******************************************************************/<br /> #include<iostream><br /> #include<cstring><br /> using namespace std;<br /> #define MAX 20002<br /> #define INF 9999999<br /> struct node{<br /> int m,num;<br /> }a[11];int n,f[MAX];int money;<br /> void init(){<br /> int i;cin>>n;<br /> for(i=0;i<n;++i){<br /> cin>>a[i].m>>a[i].num;<br /> }cin>>money;<br /> }<br /> int main(int argc, char *argv[])<br /> {<br /> init();<br /> for(int i=0;i<=money;++i)<br /> f[i]=INF;<br /> f[0]=0;<br /> for(int i=0;i<n;++i){<br /> for(int j=1;j<=a[i].num;++j){<br /> for(int k=money;k>=a[i].m;--k)<br /> f[k]=min(f[k],f[k-a[i].m]+1);<br /> }<br /> }<br /> if(f[money]!=INF)cout<<f[money]<<endl;<br /> else cout<<"-1"<<endl;<br /> return 0;<br /> }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.