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

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

初值设定:

求解顺序:
按下标从小到大依次求解数组b每一列的值,最后二维数组b的右下角元素值即为最终的解。
package org.xiu68.ch06.ex7;
public class Ex6_19 {
//数量无限的面值为x1,x2,x3,...,xn的硬币是否能兑换价格v,并且最多只能使用k枚硬币
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] x2=new int[]{5,10};
convertChange(x2, 55, 6);
convertChange(x2, 65, 6);
System.out.println("***********************");
int[] x=new int[]{3,4};
for(int i=0;i<=15;i++)
convertChange(x,i,2);
}
//coin:硬币面值
//v:要兑换的价格
//k:最多使用k枚硬币
public static void convertChange(int[] x,int v,int k){
boolean b[][]=new boolean[k+1][v+1]; //b[i][j]表示能否最多使用i枚硬币兑换价格j
for(int i=0;i<=k;i++)
b[i][0]=true; //价格0不需要硬币兑换
for(int j=1;j<=v;j++) //不使用硬币则不可以兑换任何大于0的价格
b[0][j]=false;
//寻找用p枚硬币是否能兑换价格i
for(int i=1;i<=v;i++){
for(int p=1;p<=k;p++){
for(int j=0;j<x.length;j++){
if(i>=x[j] &&b[p-1][i-x[j]]==true){ //能用p枚硬币是否能兑换价格i
b[p][i]=true;
break;
}else{ //不能用p枚硬币是否能兑换价格i
b[p][i]=false;
}
}//for3
}//for2
}//for1
System.out.println(v+":"+b[k][v]);
}
//运行结果
/* 55:true
65:false
***********************
0:true
1:false
2:false
3:true
4:true
5:false
6:true
7:true
8:true
9:false
10:false
11:false
12:false
13:false
14:false
15:false*/
}
Ex 6_19 至多用k枚硬币兑换价格_第七次作业的更多相关文章
- Ex 6_17 数量无限的硬币兑换问题_第七次作业
子问题定义:定义一个数组b,大小比兑换价格的大小多一个元素,其中b[i]表示是否能用面值为x1,x2,x3,..,xn的硬币兑换价格i. 递归关系: 初值设定:设b[0]=true 求解顺序:按下标从 ...
- Ex 6_18 硬币有限的兑换问题_第七次作业
子问题定义: 定义一个二维数组b,其中b[i][j]表示前i个币种是否能兑换价格j,表示第i个币种的面值,第i个币种的使用有两种情况,若使用,则b[i][j]=b[i-1][j-],若不使用,则b[i ...
- xth的第 12 枚硬币(codevs 1366)
题目描述 Description 传说 xth 曾经拥有11枚完全相同硬币(你懂得),不过今年呢,rabbit又送了他一 枚硬币.这枚硬币和其他硬币外观相同,只有重量不同,或轻或重.Xth 一不小心, ...
- 1366 xth 的第 12 枚硬币
1366 xth 的第 12 枚硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 传说 xth 曾 ...
- 问题 D: 小k的硬币问题
问题 D: 小k的硬币问题 时间限制: 1 Sec 内存限制: 128 MB提交: 21 解决: 5[提交] [状态] [命题人:jsu_admin] 题目描述 小k和小p一起玩一个游戏,有n堆硬 ...
- n枚硬币问题(找假币)
问题描述: 在n枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币. 解题思路: ...
- Java实现8枚硬币问题(减治法)
1 问题描述 在8枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币. 2.1 减 ...
- BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP
BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP Description 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为“Xoinc”的两人硬币游戏. 初始时,一个有N(5 ...
- BZOJ_1042_[HAOI2008]硬币购物_容斥原理+背包
BZOJ_1042_[HAOI2008]硬币购物_容斥原理+背包 题意: 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买s i的价值 ...
随机推荐
- javascript面向对象精要第四章构造函数和原型对象整理精要
- csp20140904最优配餐_Solution
Solution 经典bfs,所有的点到店的最短距离 其中一开始队列的长度为店的数目 一个点可能有多个订单 关于数据大小: 1.1000*(1000*1000)*2000=2,0000,0000,00 ...
- Linux 防火墙iptables开放特定端口
1.查看状态:iptables -L -n2.直接编辑:vi /etc/sysconfig/iptables3.端口开放:-A INPUT -m state --state NEW -m tcp -p ...
- MySQL_help语句(不定时更新)
1.使用delimiter 命令重新定义mysql 的默认语句分隔符 delimiter $
- Scala进阶之路-统计商家id的标签数以及TopN示例案例分析
Scala进阶之路-统计商家id的标签数以及TopN示例案例分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.项目需求 将“temptags.txt”中的数据进行分析,统计出 ...
- python---ORM之SQLAlchemy(4)relationship多对多练习
练习一:朋友 import sqlalchemy from sqlalchemy import create_engine from sqlalchemy import Column, String, ...
- VS中修改工程名的解决方案
VS中修改工程名的解决方案: 一.先修改工程名/解决方案名(在VS中修改即可)举例,原先的工程名为OldProject 想要改成NewProject1.找到工程/解决方案所在的文件夹(已工程名/解 ...
- C# 时间戳与时间相互转化
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 时间戳d ...
- 表格控件QTableWidget
搭配QTableWidgetItem使用 样式: import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplica ...
- 微信小程序的页面渲染(if/for)
下面,粗略的介绍一下微信小程序的条件渲染.列表渲染.数据绑定等,详细的内容大家可以去看微信小程序的API,在此只做简单描述,希望能帮助到大家 条件渲染 <!--wxml--> <vi ...