Change HDU
来源:互联网 发布:冋花顺炒股软件 编辑:程序博客网 时间:2024/06/01 08:37
HDU 2069 Change
题目大意:给定5种面值的硬币50、25、10、5、1,然后输入一个钱的总数n,看看在所有使用的硬币数目不超过100的时候,n共有多少种组成结果m。然后输出这个m。
样例:
1126
413思路:n的范围较小可以直接暴力打表从1开始用一个数组记录即可。
AC代码:
#include<cstdio>#include<cstring>using namespace std;int i,a,b,c,d,e,n;int dp[300]={1};void get(){ for(i=1;i<=255;i=i++) for(a=0;a<=i;a++) for(b=0;5*b<=i-a;b++) for(c=0;10*c<=i-a-5*b;c++) for(d=0;25*d<=i-a-5*b-10*c;d++) { e=i-a-5*b-10*c-25*d; if(e%50==0&&a+b+c+d+e/50<=100) dp[i]++; }}int main(){ get(); while(scanf("%d",&n)!=EOF) printf("%d\n",dp[n]); return 0;}
由于刚开始做的时候没有看清题目要求,误以为没有限制硬币数目,和之前做过的UVA 674的思路一样,一直WA
顺便在这里写一下UVA 674
题意和上一题差不多但是对硬币数目没有限制,n小于7489
样例:
1126
413思路:这里我想的也是打表但是对于这个问题的话只需要算0.5.10.15.....5*n对应的硬币的m,因为 n*5-(n-1)*5之间基于(n-1)*5的分类方法多加的只能是1,所以打表的时候可以适当剪枝
这里的状态转移方程是:
dp [ i ] [ j ] + = dp [ j - k * v [ i ] ] [ i - 1 ];
AC代码:
#include<iostream>#include<cstring>using namespace std;int v[5]={1,5,10,25,50};int dp[8000][6];int i,j,k;int n;void get(){ for(i=0;i<=8000;i++) dp[i][0]=1; for(i=0;i<5;i++) dp[0][i]=1; for(i=1;i<5;i++) { int sum=0; for(j=1;j<=8000;j=j+5) { for(k=0;k*v[i]<=j;k++) { dp[j][i]+=dp[j-k*v[i]][i-1]; } } }}int main(){ memset(dp,0,sizeof(dp)); get(); while(cin>>n) { cout<<dp[n/5*5+1][4]<<endl; } return 0;}这个题同样可以用一维数组暴力解决,AC代码如下:
#include<iostream>#include<string.h>using namespace std;int a[15000]={0};int b[5]={1,5,10,25,50};int main(){int n,i,j;while(cin>>n){memset(a,0,sizeof(a));a[0]=1;for(i=0;i<5;i++){for(j=0;j<=n-b[i];j++){if(a[j])a[j+b[i]]+=a[j];}}cout<<a[n]<<endl;}return 0;}
如果数据较大的话第二种方法明显不适合使用
1 0
- Change HDU
- HDU 2069 Coin Change
- HDU 2068 Coin Change
- HDU 4357 String change
- HDU 4357 - String change
- hdu---String change
- hdu 4357 String Change
- hdu 2069 Coin Change
- hdu 4357 String change
- HDU Quick Change
- Quick Change hdu
- Hdu-2069_Coin Change
- HDU 2069 Coin Change
- HDU 2069 Coin Change
- hdu 2069 Coin Change
- HDU 2069 Coin Change
- hdu 2069 Coin Change
- hdu 2069 Coin Change
- Nginx+Tomcat搭建高性能负载均衡集群
- git bash 出现vim的时候怎么退出
- 浅谈 A*算法
- 增加搜索引擎对网站的权重 网站体系架构是第一位
- java项目学习方法(1)
- Change HDU
- DB2-SQLSTATE 消息大全---[IBM官方]
- 【Java基础知识】内部类详解
- 设置状态栏高亮解决
- 活到81岁你会干嘛?选择为 iOS 开发软件的她厉害了!
- HDU 1698 Just a Hook 线段树区间更新求和
- Frogger
- poj1050-To the Max(最大子段和)
- Android中Gradle实用指南