硬币组合问题
2017-02-17 21:57
204 查看
问题:假设有5元,10元,25元,1元的纸币,任意组合,问若组合成1000元能有多少种组法?
转化后的问题是x,y,z,m取多少值时满足条件。
x的取值范围0到1000/5
y的取值范围0到1000/10
z的取值范围0到1000/25
m的取值范围0到1000/1
代码如下:
当然这种做法是最蠢的了。
思路一:暴力破解法
问题转化:1000=5*x+10*y+25*z+1*m转化后的问题是x,y,z,m取多少值时满足条件。
x的取值范围0到1000/5
y的取值范围0到1000/10
z的取值范围0到1000/25
m的取值范围0到1000/1
代码如下:
package practice; public class ZuShu { public static void main(String[] args) { // TODO Auto-generated method stub int [] arr ={5,10,25,1}; int aim = 1000; ZuShu z = new ZuShu(); System.out.println("结果为:"+z.baoli(arr,aim)); } public int baoli(int []arr,int aim){ int res=0; int n1=aim/arr[0]; int n2=aim/arr[1]; int n3=aim/arr[2]; int n4=aim/arr[3]; for(int i=0;i<n1;i++){ for(int j=0;j<n2;j++){ for(int k=0;k<n3;k++){ for(int m=0;m<n4;m++){ if(i*arr[0]+j*arr[1]+k*arr[2]+m*arr[3]==aim){ res+=1; } } } } } return res; } }
当然这种做法是最蠢的了。
思路二:动态规划
相关文章推荐
- 【背包问题】1分2分5分的硬币,组成1角,共有多少种组合
- Recursion 硬币组合问题 @CareerCup
- 动态规划之硬币面值组合问题
- 硬币组合问题之最少硬币个数
- 一维数组和二维数组求解硬币组合个数问题
- 最小数目的硬币组合问题(dp)
- 【编程之法】硬币面值组合问题
- 硬币组合问题
- hdu1085(母函数解有限个硬币组合问题)
- 硬币面值组合问题
- 硬币组合问题
- 硬币组合问题
- 程序员面试金典(动态规划):1分,5分,10分,25分硬币面值组合问题(解题思路)
- 【算法27】硬币面值组合问题
- 硬币组合问题
- 动态规划之硬币组合问题
- 钱币组合问题(一):(每种硬币不限次数)
- 关于硬币组合问题和DP的结合
- 动态规划-最少硬币组合问题
- 硬币组合问题-动态规划