8:最少的木棍数量 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65535kB 描述 给定不同长度的木棍sticks和一个目标长度length。请你计算可以拼接成该长度所需的最少的木棍个数。如果没有任何一种组合能组成目标长度,输出 -1。 每种长度的木棍的数量是无限的。 输入 第一行只有一个数字,表示木棍长度种数n 第二行包含n个以空格分隔的数字,表示不同长度的木棍sticks 第三行只有一个数字,表示目标长度length 输出 可以拼成该长度所需的最少的木棍个数。(如果没有这样的组合,输出-1)(使用c++)

时间: 2024-02-11 19:09:44 浏览: 26
以下是使用C++实现的代码: ```c++ #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, length; cin >> n; vector<int> sticks(n); for (int i = 0; i < n; i++) { cin >> sticks[i]; } cin >> length; sort(sticks.begin(), sticks.end(), greater<int>()); int count = 0, total = 0, index = 0; while (total < length && index < n) { if (sticks[index] <= length - total) { count += (length - total) / sticks[index]; total += (length - total) % sticks[index]; } index++; } if (total == length) { cout << count << endl; } else { cout << -1 << endl; } return 0; } ``` 该程序使用vector来存储木棍长度,并使用STL中的sort函数按从大到小排序。然后使用贪心算法计算最少需要的木棍数量。 具体实现过程与Python实现类似,使用count变量记录已经使用的木棍数量,total变量记录已经拼接好的长度,index变量从后往前遍历木棍长度。每次循环时,如果当前木棍可以用于拼接目标长度,就将计数器加上目标长度和当前木棍长度的商,然后将已经拼接好的长度加上目标长度和当前木棍长度的余数。如果已经拼接好的长度等于目标长度,就直接输出计数器的值。如果遍历完所有的木棍后仍然无法拼接出目标长度,就输出-1。

相关推荐

最新推荐

recommend-type

在中大型计算机系统中多采用三总线结构:系统总线、内存总线、I/O总线

在中大型计算机系统中多采用三总线结构:系统总线、内存总线、I/O总线 信息传送方式有四种: 串行传送用一根数据线按从低到高的顺序逐位传送数据(外总线通常采用串行传送方式); 并行传送:用多要数据线同时传送一...
recommend-type

如何解决Mybatis--java.lang.IllegalArgumentException: Result Maps collection already contains value for X

两天因为项目需要整合spring、struts2、mybatis三大框架,但启动的时候总出现这个错误,困扰我好久,折腾了好久终于找到问题根源,下面小编给大家分享下问题所在及解决办法,一起看看吧
recommend-type

HTML表格标记教程(47):表格嵌套

在页面中,排版是通过表格的嵌套来完成的。即一个表格内部可以套入另一个表格。原因如下:首先,网页的...如果这时一些内部排版的细节也通过总表格来实现,容易引起行高列宽等的冲突,给表格制作带来困难。其次,浏览
recommend-type

STC8H8K64U原理图(上)

STC8H8K64U原理图(上)
recommend-type

英语四六级:如何在短期内利用答题小技巧提分100+(2).docx

考试之前针对不同文种和方向提前准备最熟悉写法的作文大框架结构(总分总,总分等),以及一些可以套进去的过渡、衔接句子。这样考试的时候,就已经有一个骨架,我们只需要根据思路把内容填入骨架中。 【布局美观】...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

get() { return this.photoState },

这是一个 JavaScript 中的方法定义,它定义了一个名为 `get` 的方法。这个方法没有参数,它返回了 `this.photoState`。在这个方法中,`this` 是指当前对象,而 `photoState` 是该对象的一个属性。通常情况下,`get` 方法用于获取对象的属性值,并且可以在获取属性值之前进行一些逻辑操作。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。