洛谷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;
}

相关推荐

  1. P1042乒乓球

    2023-12-06 10:48:06       30 阅读
  2. P1449 后缀表达式

    2023-12-06 10:48:06       10 阅读
  3. (DFS + 剪枝)【P1731】 [NOI1999] 生日蛋糕

    2023-12-06 10:48:06       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 10:48:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 10:48:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 10:48:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 10:48:06       18 阅读

热门阅读

  1. C语言 if语句有无(;)分号问题

    2023-12-06 10:48:06       37 阅读
  2. Neutron — 安全组

    2023-12-06 10:48:06       37 阅读
  3. CoreDNS实战(十)-kubernetes插件

    2023-12-06 10:48:06       43 阅读
  4. cloudreve网盘迁移K8S

    2023-12-06 10:48:06       33 阅读
  5. Redis搭建

    2023-12-06 10:48:06       39 阅读
  6. vue-template-loader 是如何工作的?

    2023-12-06 10:48:06       35 阅读
  7. github ssh 秘钥过期解决记录

    2023-12-06 10:48:06       44 阅读
  8. vue2离线下载

    2023-12-06 10:48:06       33 阅读
  9. Vue和uni-app的区别

    2023-12-06 10:48:06       38 阅读
  10. vue-loader是如何工作的?

    2023-12-06 10:48:06       28 阅读
  11. Spark-03: Spark SQL 基础编程

    2023-12-06 10:48:06       20 阅读
  12. C练习题_12

    2023-12-06 10:48:06       24 阅读
  13. Centos 搭建Git私有服务器

    2023-12-06 10:48:06       38 阅读
  14. MATLAB中dlmwrite函数用法

    2023-12-06 10:48:06       33 阅读