洛谷P1049装箱问题 ————递归+剪枝+回溯

没没没没没没没没没错,又是一道简单的递归,只不过加了剪枝,我已经不想再多说,这道题写了一开始写了普通深搜,然后tle了一个点,后面改成剪枝,就ac了,虽然数据很水,但是不妨碍我们练习搜索。

先画个草图:

从1开始找,找下一层最左边的2,判断箱子里是否能装下这个物体,如果能,装进去。(现在箱子里装了(1,2) 体积是(8+3=11)

然后继续下一层继续判断,能否装下。(找最左边的3,现在箱子里装了(1,2,3) 体积是(8+3+12=23)

再找下一个,4,发现23+7>24,就是箱子装不下了,那就跳过4,往下搜。

当搜完了,我们就返回上一层重复这个步骤即可。

上代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cctype>
#include<map>
#include<set>
#include<queue>
#include<numeric>
#include<iomanip>
using namespace std;
const int N = 30+7;
const int V = 2e4 + 7;
int a[N];
int flag[N];
int n, v, ans=0x7fffffff;
void dfs(int x, int v) {ans = min(ans, v);for (int i = x; i < n; i++) {if (flag[i] == 0) {if (v - a[i] >= 0) {flag[i] = 1;dfs(i + 1, v - a[i]);flag[i] = 0;}}}
}
int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> v >> n;for (int i = 0; i < n; i++)cin >> a[i];dfs(0, v);cout << ans;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/216562.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类和对象(3)日期类的实现

日期类的实现 一&#xff0c;声明二&#xff0c;函数成员定义2.1构造函数2.2获取月份天数2.3比较运算符2.3.1等于和大于2.3.2其他 2.4计算运算符2.4.1 &&2.4.2-&&- 2.5日期-日期 一&#xff0c;声明 class Date { public:Date(int year 1, int month 1, int…

[BJDCTF 2020]easy_md5

md5(string,raw) 所以首先我们要找到一个字符串&#xff0c;这个字符串经过md5得到的16位原始二进制的字符串能帮我们实现sql注入。 我们的目标就是要找一个字符串取32位16进制的md5值里带有276f7227这个字段的&#xff0c;接着就是要看关键的数字部分了&#xff0c;在276f72…

自动语音识别 支持86种语言 Dragon Professional 16 Crack

从个体从业者到全球组织&#xff0c;文档密集型行业的专业人士长期以来一直依靠 Dragon 语音识别来更快、更高效地创建高质量文档&#xff0c;减少管理开销&#xff0c;以便他们能够专注于客户。了解 Dragon Professional v16 如何通过单一解决方案提高标准&#xff0c;为各个业…

Clion在Windows下build时出现undefined reference,即使cmake已经正确链接第三方库(如protobuf)?

你是否正在使用clion自带的vcpkg来安装了protobuf&#xff1f; 或者你是否自己使用visual studio自己编译了libprotobuf.lib&#xff1f; 你是否已经正确在CmakeLists.txt中添加了以下命令&#xff1a; find_package(Protobuf CONFIG REQUIRED) include_directories(${Protobu…

c++数学表达式解析求值库推荐

让程序支持自定义的数学计算器是常用功能&#xff0c;找了几个用来数学表达式解析求值的库&#xff0c;有几个看起来很不错。 各个数学表达式求值的综合对比 对比结果如下&#xff0c;ExprTK得分最高&#xff0c; TinyExpr得分最低&#xff0c; GitHub - ArashPartow/math-par…

新版画中画documentPictureInPicture API使用

关于该API&#xff0c;chrome dev有一篇比较好入门的文章&#xff0c;如果你没看过强烈推荐你先看这篇基础用法&#xff0c;该文章只针对API的特性和chrome dev文章进行扩展性说明。 提前说明&#xff0c;目前该API是非w3c草案功能&#xff0c;从chrome 116开始已经强推到stabl…

ASO优化之如何测试应用的屏幕截图

截取屏幕截图并上传到应用商店后&#xff0c;我们需要对其进行测试和优化&#xff0c;从而来获得更高的转化率&#xff0c;精美的图片有助于提高应用在商店的安装率。 1、定义目标受众。 战略性地决定测试哪些目标受众&#xff0c;可以通过年龄、性别、地点、兴趣等来定义我们…

超声波雪深传感器冬季里的科技魔法

在冬季的某个清晨&#xff0c;当你打开大门&#xff0c;被厚厚的积雪覆盖的大地映入眼帘&#xff0c;你是否曾想过&#xff0c;这片雪地的深度是多少&#xff1f;它又如何影响着我们的生活和环境&#xff1f;今天&#xff0c;我们将为你揭开这个谜团&#xff0c;介绍一款神秘的…

AHSATA模块之AHCI HBA卡开发,结合SPEC文档和项目实际底层FW开发总结(一)

目录 一、简介二、总体架构和常用术语总结2.1 总结介绍2.2 常用术语解析 三、详细流程3.1 总结3.2 物理层详解3.3 链路层、传输层详解3.4 命令层详解 四、FW开发4.1 pcie header配置4.2 PMCAP和MSICAP配置4.3 pcie capbility配置4.4 Generic Host Control配置4.5 Port Register…

EEG 脑电信号处理合集(2): 信号预处理

脑电信号在采集完以后&#xff0c;需要进行一系列的预处理操作&#xff0c;然后才能用于后续的科学研究和计算。预处理是脑电信号分析最基本且重要的一步。基于python环境MNE库。 1 使用带通滤波器&#xff0c;信号滤波&#xff0c;去噪&#xff0c;去工频干扰 data_path sam…

【计网 可靠数据传输RDT】 中科大笔记 (十 一)

目录 0 引言1 RDT的原理RDT的原理&#xff1a; 2 RDT的机制与作用2.1 重要协议停等协议&#xff08;Stop-and-Wait&#xff09;:连续ARQ协议: 2.2 机制与作用实现机制&#xff1a;RDT的作用&#xff1a; &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#x…

【自主探索】基于 rrt_exploration 的单个机器人自主探索建图

文章目录 一、rrt_exploration 介绍1、原理2、主要思想3、拟解决的问题4、优缺点 二、安装环境三、安装与运行1、安装2、运行 四、配置自己的机器人1、Robots Network2、Robots frame names in tf3、Robots node and topic names4、Setting up the navigation stack on the rob…