首页 > 代码库 > 紫书---P60硬币问题
紫书---P60硬币问题
紫书---P60硬币问题
------完全背包、DP
#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define INF 0x3f3f3f3f#define N 1010int n,s;int w[N]; //w表示n种硬币的面值int dp1[N]; //dp1[j]表示刚好凑足j的最少硬币数int dp2[N]; //dp2[j]表示刚好凑足j的最多硬币数int main(){ int i,j; while(scanf("%d%d",&n,&s)!=EOF) { memset(dp1,INF,sizeof(dp1)); memset(dp2,-INF,sizeof(dp2)); dp1[0]=0; dp2[0]=0; for(i=1;i<=n;i++) { scanf("%d",&w[i]); } for(i=1;i<=n;i++) { for(j=w[i];j<=s;j++) { dp1[j]=min(dp1[j],dp1[j-w[i]]+1); dp2[j]=max(dp2[j],dp2[j-w[i]]+1); } } cout<<dp1[s]<<‘ ‘<<dp2[s]<<endl; } return 0;}
紫书---P60硬币问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。