[C++]动态规划系列之币值最大化
/**
*
* @author Zen Johnny
* @date 2018年3月31日 下午10:04:48
*
*/
package freeTest.dynamicProgramming; import java.util.Scanner; /*动态规划之币值最大化*/
/*
问题描述:
给定一排n个硬币,其面值均为整数C1, C2, ..., Cn, 这些整数并不一定两两不同。
问如何选择硬币,使得在其【原始位置互不相邻】的条件下,所选硬币的总金额最大。
*/
public class MaxAmount {
/*动态规划算法策略*/
/*
递推关系:F(n)为当前的最大化币值
F(n) = max{Cn + F(n-2),F(n-1)},n>1
F(0)=0;F(1)=C1;
*/
public static double maxAmount(double coins[], int pos) {
if(pos>1) {
return Math.max(maxAmount(coins, pos - 2) + coins[pos], maxAmount(coins, pos - 1));
} else if(pos == 1) {
return coins[0];
} else {//pos == 0
return 0;
}
} public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int size;
double [] coins; System.out.println("硬币个数:");
size = scanner.nextInt();
coins = new double [size];
System.out.println("请输入币值数组:");
for(int i=0;i<size;i++) {
coins[i] = scanner.nextDouble();
}
System.out.printf("[Max Amount] %f\n", maxAmount(coins, size-1));;
}
}
output:
硬币个数:
9
请输入币值数组:
1 1 2 10 6 2 10 8 12
[Max Amount] 33.000000
[C++]动态规划系列之币值最大化的更多相关文章
- [C++]动态规划系列之Warshall算法
/** * * @author Zen Johnny * @date 2018年3月31日 下午8:13:09 * */ package freeTest; /* [动态规划系列:Warshall算法 ...
- 动态规划系列(零)—— 动态规划(Dynamic Programming)总结
动态规划三要素:重叠⼦问题.最优⼦结构.状态转移⽅程. 动态规划的三个需要明确的点就是「状态」「选择」和「base case」,对应着回溯算法中走过的「路径」,当前的「选择列表」和「结束条件」. 某种 ...
- leetcode 64. 最小路径和 动态规划系列
目录 1. leetcode 64. 最小路径和 1.1. 暴力 1.2. 二维动态规划 2. 完整代码及执行结果 2.1. 执行结果 1. leetcode 64. 最小路径和 给定一个包含非负整数 ...
- 算法笔记_045:币值最大化问题(Java)
目录 1 问题描述 2 解决方案 2.1 动态规划法 1 问题描述 给定一排n个硬币,其面值均为正整数c1,c2,...,cn,这些整数并不一定两两不同.请问如何选择硬币,使得在其原始位置互不相邻 ...
- [WebShow系列] Web浏览器最大化满屏及比例缩放方法
如果要在大屏上展示,大屏所带电脑的浏览器应该处于满屏,此时就不会显示浏览器软件的边框了.个别浏览器在满屏状态下,某些边栏等还继续保留,此时应设置此浏览器的显示选项方可消除. 如果屏幕中的显示对象过小或 ...
- Java实现币值最大化问题
1 问题描述 给定一排n个硬币,其面值均为正整数c1,c2,-,cn,这些整数并不一定两两不同.请问如何选择硬币,使得在其原始位置互不相邻的条件下,所选硬币的总金额最大. 2 解决方案 2.1 动态规 ...
- 树形DP——动态规划与数据结构的结合,在树上做DP
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法与数据结构的第15篇,也是动态规划系列的第4篇. 之前的几篇文章当中一直在聊背包问题,不知道大家有没有觉得有些腻味了.虽然经典的文 ...
- LeetCode入门指南 之 动态规划思想
推荐学习labuladong大佬的动态规划系列文章:先弄明白什么是动态规划即可,不必一次看完.接着尝试自己做,没有思路了再回过头看相应的文章. 动态规划一般可以由 递归 + 备忘录 一步步转换而来,不 ...
- 2、动态规划接替套路框架——Go语言版
前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在 ...
随机推荐
- Eureka
Consul vs. Eureka Eureka is a service discovery tool. The architecture is primarily client/server, w ...
- ubuntu 15 安装docker
最近听说Docker很火,不知道什么东西,只知道是一个容器,可以跨平台.闲来无事,我也来倒弄倒弄.本文主要介绍:Ubuntu下的安装,以及基本的入门命令介绍:我的机器是Ubuntu 15.04 64位 ...
- apache ArrayUtils 工具类
org.apache.commons.lang3.ArrayUtils // 1.add():将给定的数据添加到指定的数组中,返回一个新的数组. int[] arr = { 1, 2, 3 }; in ...
- Vim保存时权限不足
保存时权限不足,由于打开时忘记在命令前添加sudo.我们并不需要放弃修改,从新以root权限打开 解决方案 命令模式使用:w !sudo tee %提权,保存
- 前端JS Excel解析导入
本文转载自:https://www.cnblogs.com/yinqingvip/p/6743213.html 需要用到js-xlsx:下载地址:js-xlsx <!DOCTYPE html&g ...
- [luogu3294][背单词]
题目链接 题意 读完题目就一个感受:这出题人tm不会说人话吗.真的感觉这个题理解题意比想出正解更难. 其实题目的意思就是,给出一些单词,给这些单词编个号,然后要求其他的单词中是这个单词后缀的词都在这个 ...
- (转)Java并发编程:线程池的使用
背景:线程池在面试时候经常遇到,反复出现的问题就是理解不深入,不能做到游刃有余.所以这篇博客是要深入总结线程池的使用. ThreadPoolExecutor的继承关系 线程池的原理 1.线程池状态(4 ...
- 关于 tlb 文件
来自:http://blog.csdn.net/lcl_data/article/details/7418387 tlb文件是什么?tlb文件是一个说明文件,通过TLB文件,用户可以得知你的DLL中的 ...
- jokes
先看效果如下 目录如下 //index.html <!DOCTYPE html> <html lang="zh-CN"> <head> < ...
- windows 文件夹下所有文件名称
dir dir /b 没有其它信息 dir /b >>xxx.txt 保存到txt