码迷,mamicode.com
首页 > 其他好文 > 详细

Ex 6_17 数量无限的硬币兑换问题_第七次作业

时间:2017-12-05 20:12:30      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:硬币   strong   ima   style   blog   log   generated   break   ...   

技术分享图片

子问题定义:定义一个数组b,大小比兑换价格的大小多一个元素,其中b[i]表示是否能用面值为x1,x2,x3,..,xn的硬币兑换价格i。

递归关系:

技术分享图片

初值设定:设b[0]=true

 

求解顺序:按下标从小到大依次求解b[i]的值,最后返回b[v]中的结果即为最终结果。

技术分享图片
 1 package org.xiu68.ch06.ex7;
 2 
 3 public class Ex6_17 {
 4 
 5     //数量无限的面值为x1,x2,x3,...,xn的硬币是否能兑换价格v
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int[] coin=new int[]{5,6};
 9         for(int i=0;i<=30;i++)
10             convertChange(coin,i);    
11     }
12     
13     //coin:硬币面值
14     //v:要兑换的价格
15     public static void convertChange(int[] x,int v){
16         boolean b[]=new boolean[v+1];    //能否用硬币兑换价格v
17         b[0]=true;                        
18         
19         for(int i=1;i<=v;i++){            //能否用硬币兑换价格i (子问题的规模)
20             for(int j=0;j<x.length;j++){
21                 if(i>=x[j] && b[i-x[j]]==true){
22                     b[i]=true;
23                     break;
24                 }else{
25                     b[i]=false;
26                 }
27             }
28         }
29         System.out.println(v+":"+b[v]);
30     }
31     
32     //运行结果
33 /*    0:true
34     1:false
35     2:false
36     3:false
37     4:false
38     5:true
39     6:true
40     7:false
41     8:false
42     9:false
43     10:true
44     11:true
45     12:true
46     13:false
47     14:false
48     15:true
49     16:true
50     17:true
51     18:true
52     19:false
53     20:true
54     21:true
55     22:true
56     23:true
57     24:true
58     25:true
59     26:true
60     27:true
61     28:true
62     29:true
63     30:true*/
64 }
View Code

 

Ex 6_17 数量无限的硬币兑换问题_第七次作业

标签:硬币   strong   ima   style   blog   log   generated   break   ...   

原文地址:http://www.cnblogs.com/xiu68/p/7988956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!