2022-08-16:绳子总长度为M, 100 -> M, (6, 100) (7,23) (10,34) -> arr, 每一个长度的绳子对应一个价格,比如(6, 10)表示剪成长度为6的绳子,对应
2022-08-16:绳子总长度为M,
100 -> M,
(6, 100) (7,23) (10,34) -> arr,
每一个长度的绳子对应一个价格,比如(6, 10)表示剪成长度为6的绳子,对应价格10,
可以重复切出某个长度的绳子。
定义递归如下:
所有可以切出来的长度 对应 价值都在数组ropes里,
ropes[i] = {6, 10} 代表i方案为:切出长度为6的绳子,可以卖10元,
index…所有的方案,随便选择。index之前的方案,不能选择,
返回最大的价值。
自己去改动态规划,
arr[i][0] -> i号方案能切多少长度,
arr[i][1] -> 切出来这个长度,就能获得的价值,
arr[index…]自由选择,绳子还剩restLen长度。
返回,最大价值。
答案2022-08-16:
递归。
代码用rust编写。代码如下:
fn main() {
let mut arr: Vec<Vec<i32>> = vec![vec![6, 10], vec![7, 12]];
let ans1 = max_value(&mut arr, 0, 19);
println!("ans1 = {}", ans1);
}
fn max_value(arr: &mut Vec<Vec<i32>>, index: i32, rest_len: i32) -> i32 {
if rest_len <= 0 || index == arr.len() as i32 {
return 0;
}
// 绳子还有剩余、且还有方案
// index号方案
// 不选
let p1 = max_value(arr, index + 1, rest_len);
// 选
let mut p2 = 0;
if arr[index as usize][0] <= rest_len {
// 剩余绳子够长,才能选当前方案
p2 = arr[index as usize][1] + max_value(arr, index, rest_len - arr[index as usize][0]);
}
return get_max(p1, p2);
}
fn get_max<T: Clone + Copy + std::cmp::PartialOrd>(a: T, b: T) -> T {
if a > b {
a
} else {
b
}
}
执行结果如下:

2022-08-16:绳子总长度为M, 100 -> M, (6, 100) (7,23) (10,34) -> arr, 每一个长度的绳子对应一个价格,比如(6, 10)表示剪成长度为6的绳子,对应的更多相关文章
- Zookepper(2015.08.16笔记)
2015.08.16zookepper Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务(如同小区里面的供水.电的系统) 它包含一个简单的原 ...
- http://www.cnblogs.com/alipayhutu/archive/2012/08/16/2643098.html
http://www.cnblogs.com/alipayhutu/archive/2012/08/16/2643098.html
- 2021.08.16 P1260 工程规划(差分约束)
2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...
- 2021.08.16 P1078 文化之旅(最短路)
2021.08.16 P1078 文化之旅(最短路) 题意: n个地,k个信仰,每个地都有自己的信仰,信仰之间会相互排斥,同信仰之间也会相互排斥,有m条路,问从s到t的最短距离是多少? 有一位使者要游 ...
- 2021.08.16 P1300 城市街道交通费系统(dfs)
2021.08.16 P1300 城市街道交通费系统(dfs) P1300 城市街道交通费系统 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 城市街道交费系统最近创立了.一 ...
- 2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意)
2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意) P1363 幻象迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 幻象迷宫可以认为是无限 ...
- VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt
VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt Form1 内代码如下: ' 2022年8月22日 15时15分 ' 作者:name.vt Private Sub cmdCle ...
- 不用循环,、es6创建一个长度为100的数组
问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标? 结果为: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1 ...
- 前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,,怎么实现好?
昨天,看这道题,脑子锈住了,就是没有思路,没看明白是什么意思?⊙﹏⊙|∣今天早上起床,想到需要思考一下这个问题. 当然,我没想明白为什么要这样做?(创建一个长度为100的数组,并且每个元素的值等于它的 ...
- 【16】进大厂必须掌握的面试题-100个python面试
我们整理了Python面试的主要问题清单,分为7个部分: 基本面试问题 OOPS面试问题 基本的Python程序 Python库面试问题 数据分析面试题 选择题(MCQ) 基本的Python面试问题 ...
随机推荐
- 行转列 && 字段拆分
explode称之为Hive爆炸函数,意思就是将一行数据炸开.Usage:explode(array/map) explode函数传递的参数必须是一个array或者是map hivescala> ...
- vue中的观察者模式和发布订阅者模式
观察者模式 目标者对象和观察者对象有相互依赖的关系,观察者对某个对象的状态进行观察,如果对象的状态发生改变,就会通知所有依赖这个对象的观察者, 目标者对象 Subject,拥有方法:添加 / 删除 / ...
- Yolov5——训练目标检测模型
项目的克隆 打开yolov5官网(GitHub - ultralytics/yolov5 at v5.0),下载yolov5的项目: 环境的安装(免额外安装CUDA和cudnn) 打开anaconda ...
- Simulink的MATLAB function使用
note 2021-02-21 下面的文章来自我的公众号 yhm同学 note 2021-04-01 今天审稿,发现存在着一些我没有发现的错误,但是我不想修改了. 原文链接 https://mp.we ...
- linux环境下部署mysql环境
一.部署步骤 1.将安装包上传到Linux服务器上(目录随意),然后解压缩 2.进入到解压后的目录下,分别执行以下命令安装四个包(严格按照顺序执行) rpm -ivh mysql-community- ...
- webpack原理(1):Webpack热更新实现原理代码分析
热更新,主要就是把前端工程 文件变更,即时编译,然后通知到浏览器端,刷新代码. 服务单与客户端通信方式有:ajax 轮询,EventSource.websockt. 客户端刷新一般分为两种: 整体页面 ...
- RMQ总结
题目描述 给定N个数的序列和M次询问,每次询问给定左右端点区间中的最大值 输入样例: 6 (N) 34 1 8 123 3 2 4 (M) 1 2 1 5 3 4 2 3 输出样例: 34 123 1 ...
- 【Visual Leak Detector】QT 中 VLD 输出解析(二)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记. 目录 说明 1. 使用方式 2. 有一处内存泄漏时的输出报告(int 型) 3. 有一处内存泄漏时的输出报告(int 数组型) 1. 使 ...
- 一次Feign使用的案例
项目名称 projectName Maven架构 l ProjectName-项目名称,项目父工程 projectName-api-提供给外部组件使用的接口 common-一些基本共用的类.枚举常量 ...
- Kafka存储内幕详解
1.概述 随着微服务和分布式计算的出现,Kafka已经成为各种主流平台系统架构中不可缺少的组成部分了.在本篇文章中,笔者将尝试为大家来解密Kafka的内部存储机制是如何运作的. 2.内容 在分布式系统 ...