当前位置: 首页 > news >正文

acwing算法提高之搜索--剪枝

目录

  • 1 介绍
  • 2 训练

1 介绍

本专题用来记录使用dfs剪枝技巧求解的题目。

剪枝有以下思路:

  1. 优化搜索顺序。
  2. 可行性剪枝。
  3. 最优性剪枝。
  4. 唯一性剪枝,也叫去除冗余。
  5. 记忆化搜索,也叫dp。

2 训练

题目1:165小猫爬山

C++代码如下,

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>using namespace std;const int N = 20;
int n, m;
vector<int> a;
vector<vector<int>> group;
int res = 20;bool check(int x, int j) {int s = 0;for (auto v : group[j]) s += v;return s + x <= m;
}void dfs(int i, int groupsize) {if (groupsize >= res) {//最优性剪枝return;}if (i == n) {res = groupsize;}int x = a[i];//将x放入哪个组for (int j = 0; j < groupsize; ++j) {//将x放入第j组if (check(x, j)) { //可行性剪枝group[j].emplace_back(x);dfs(i + 1, groupsize);group[j].pop_back();}}//新开一个组group[groupsize].emplace_back(x);dfs(i + 1, groupsize + 1);group[groupsize].pop_back();return;
}int main() {cin >> n >> m;a.resize(n + 1);for (int i = 0; i < n; ++i) cin >> a[i];group.resize(n + 1);sort(a.begin(), a.end());reverse(a.begin(), a.end()); //从大到小枚举,优化搜索顺序//放置原则dfs(0, 0);cout << res << endl;return 0;
}

题目2

http://www.lryc.cn/news/320259.html

相关文章:

  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)上篇
  • TPU浅谈
  • 华为OD机试 - 求字符串中所有整数的最小和(Java JS Python C C++)
  • goland设置保存文件时不将4个空格转为TAB
  • 基于Linux内核的socket编程(TCP)的C语言示例
  • 【WEEK3】 【DAY4】JSON交互处理第三部分【中文版】
  • 下载chromedrive,使用自动化
  • D-Star 寻路算法
  • mysql5.7编译安装
  • Java项目实战记录:雷达数据渲染
  • 进程的概念 | PCB | Linux下的task_struct | 父子进程和子进程
  • 【GPT-SOVITS-03】SOVITS 模块-生成模型解析
  • 2024HVV行动-进军蓝中研判(log4j2、fastjson、Struts2、Shiro)
  • 亮点抢先看!4月16-17日,百度Create大会开设“AI公开课”,大咖带你打造赚钱工具
  • 【笔记本清灰/实用经验】荣耀Magicbook14-2020款-R5-4500U-清灰实战
  • 如何写好Stable Diffusion的prompt
  • 计算机毕业设计 | SpringBoot+vue 移动端社区物业管理系统(附源码+论文)
  • 玩转C语言——数组初探
  • Nginx指令配置大全
  • 富格林:安全出金关注可信操作
  • DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
  • 程序员应该如何选择职业赛道?
  • 深入浅出Hive性能优化策略
  • 利用卷积神经网络进行人脸识别
  • 固态硬盘有坏道怎么恢复数据 固态硬盘坏道怎么修复
  • adobe animate 时间轴找不到编辑多个帧按钮
  • 5 亿欧元巨额奖励!法国国防部启动量子初创公司项目
  • Linux:系统初始化,内核优化,性能优化(2)
  • JS08-DOM节点
  • 2024/3/14打卡棋子(14届蓝桥杯)——差分