• Ex 6_19 至多用k枚硬币兑换价格_第七次作业


    子问题定义: 定义一个二维数组b,其中b[i][j]表示用i个硬币是否能兑换价格j,表示第i个币种的面值,

    递归关系:

    初值设定:

    求解顺序:

           按下标从小到大依次求解数组b每一列的值,最后二维数组b的右下角元素值即为最终的解。

     1 package org.xiu68.ch06.ex7;
     2 
     3 public class Ex6_19 {
     4     //数量无限的面值为x1,x2,x3,...,xn的硬币是否能兑换价格v,并且最多只能使用k枚硬币
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         int[] x2=new int[]{5,10};
     8         convertChange(x2, 55, 6);
     9         convertChange(x2, 65, 6);
    10         System.out.println("***********************");
    11         int[] x=new int[]{3,4};
    12         for(int i=0;i<=15;i++)
    13             convertChange(x,i,2);    
    14     }
    15     //coin:硬币面值
    16     //v:要兑换的价格
    17     //k:最多使用k枚硬币
    18     public static void convertChange(int[] x,int v,int k){
    19         boolean b[][]=new boolean[k+1][v+1];    //b[i][j]表示能否最多使用i枚硬币兑换价格j
    20                     
    21         for(int i=0;i<=k;i++)
    22             b[i][0]=true;                        //价格0不需要硬币兑换
    23         
    24         for(int j=1;j<=v;j++)                    //不使用硬币则不可以兑换任何大于0的价格
    25             b[0][j]=false;
    26         
    27         //寻找用p枚硬币是否能兑换价格i
    28         for(int i=1;i<=v;i++){        
    29             for(int p=1;p<=k;p++){
    30                 for(int j=0;j<x.length;j++){
    31                     
    32                     if(i>=x[j] &&b[p-1][i-x[j]]==true){     //能用p枚硬币是否能兑换价格i
    33                         b[p][i]=true;
    34                         break;
    35                     }else{                                  //不能用p枚硬币是否能兑换价格i
    36                         b[p][i]=false;
    37                     }
    38                     
    39                 }//for3
    40             }//for2
    41         }//for1    
    42         System.out.println(v+":"+b[k][v]);
    43     }
    44     //运行结果
    45 /*    55:true
    46     65:false
    47     ***********************
    48     0:true
    49     1:false
    50     2:false
    51     3:true
    52     4:true
    53     5:false
    54     6:true
    55     7:true
    56     8:true
    57     9:false
    58     10:false
    59     11:false
    60     12:false
    61     13:false
    62     14:false
    63     15:false*/
    64 }
    View Code
  • 相关阅读:
    C++界面库(十几种,很全)
    前端框架
    Asp.Net Web Api 接口,拥抱支持跨域访问。
    WEB控件
    MVC之验证
    AJAX跨域调用ASP.NET MVC或者WebAPI服务
    VS生产的编辑方法和编辑窗体
    DDD(领域驱动设计)应对具体业务场景,Domain Model(领域模型)到底如何设计?
    Redis简介与简单安装
    Cocos2d-x 3.1.1开发环境
  • 原文地址:https://www.cnblogs.com/xiu68/p/7988989.html
Copyright © 2020-2023  润新知