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

165. 小猫爬山(DFS之剪枝与优化)

165. 小猫爬山 - AcWing题库

翰翰和达达饲养了 N 只小猫,这天,小猫们要去爬山。

经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。

翰翰和达达只好花钱让它们坐索道下山。

索道上的缆车最大承重量为 W,而 N 只小猫的重量分别是 C1、C2……Cn。

当然,每辆缆车上的小猫的重量之和不能超过 W。

每租用一辆缆车,翰翰和达达就要付 1 美元,所以他们想知道,最少需要付多少美元才能把这 N 只小猫都运送下山?

输入格式

第 1 行:包含两个用空格隔开的整数,N 和 W。

第 2..N+1 行:每行一个整数,其中第 i+1 行的整数表示第 i 只小猫的重量 Ci。

输出格式

输出一个整数,表示最少需要多少美元,也就是最少需要多少辆缆车。

数据范围

1≤N≤18
1≤Ci≤W≤108

输入样例:
5 1996
1
2
1994
12
29
输出样例:
2

解析 :

DFS之剪枝与优化主要方法:

1.优化搜索顺序:大部分情况下,我们应该优先搜索分支较少的节点
2.排除等效冗余
3.可行性剪枝
4.最优性剪枝
5.记忆化搜索(dp)

 

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<math.h>
#include<map>
#include<sstream>
#include<deque>
#include<unordered_map>
using namespace std;
typedef long long LL;
const int N = 20;
int n, w;
int cr[N], sum[N];
int ans;int cmp(const int& a, const int& b) {return a > b;
}void dfs(int u, int k) {//最优性剪枝if (k >= ans)return;if (u > n) {ans = k;return;}for (int i = 1; i <= k; i++) {if (sum[i] + cr[u] <= w) {//可行性剪枝sum[i] += cr[u];dfs(u + 1, k);sum[i] -= cr[u];//恢复现场}}sum[k + 1] = cr[u];dfs(u + 1, k + 1);
}int main() {cin >> n >> w;for (int i = 1; i <= n; i++) {scanf("%d", &cr[i]);}//优化搜索顺序sort(cr + 1, cr + 1 + n, cmp);ans = n;dfs(1, 1);cout << ans << endl;return 0;
}

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

相关文章:

  • 【Linux系统基础】(6)在Linux上大数据NoSQL数据库HBase集群部署、分布式内存计算Spark环境及Flink环境部署详细教程
  • 多维时序 | MATLAB实CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测
  • vs快捷键
  • linux 内核时间计量方法
  • 循环神经网络中的梯度消失或梯度爆炸问题产生原因分析(二)
  • JWT signature does not match locally computed signature
  • vitepress项目使用github的action自动部署到github-pages中,理论上可以通用所有
  • Python爬虫---解析---JSONPath
  • 路由器介绍和命令操作
  • Hadoop——分布式计算
  • LaTeX引用参考文献 | Texstudio引用参考文献
  • 如何在Go中使用模板
  • 云原生之深入解析基于FunctionGraph在Serverless领域的FinOps的探索和实践
  • 电子电器架构(E/E)演化 —— 主流主机厂域集中架构概述
  • Python常用的几个函数
  • 【Linux系统基础】(2)在Linux上部署MySQL、RabbitMQ、ElasticSearch等各类软件
  • HarmonyOS4.0系统性深入开发01应用模型的构成要素
  • 线下终端门店调研包含哪些内容
  • 倾斜摄影三维模型数据在行业应用分析
  • Apache Flink 进阶教程(七):网络流控及反压剖析
  • k8s学习 — (DevOps实践)第十三章 DevOps 环境搭建
  • Java_Stream流
  • delphi中,tstringlist使用方法示例
  • 【飞凌 OK113i-C 全志T113-i开发板】视频编解码测试
  • 全部没有问题 (一.5)
  • C++归并排序详解以及代码实现
  • springboot整合JPA 多表关联 :一对多 多对多
  • Python 数据分析 Matplotlib篇 plt.rcParams 字典(第5讲)
  • DeamonSet详解
  • TwIST算法MALTLAB主程序详解