首页 > 其他分享 >DFS(贪心问题)--解决最少数量装箱问题

DFS(贪心问题)--解决最少数量装箱问题

时间:2022-10-26 21:38:11浏览次数:45  
标签:target val -- DFS int Flag Vec 装箱


题目描述

有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量)

需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少(三种货物数量无限)

 

输入描述:

输入箱子载重量X(1 <= X <= 10000),一个整数。

输出描述:

如果无法装满,输出 -1。
如果可以装满,输出使用货物的总个数。

示例1

输入

复制

4

输出

复制

-1

说明

无法装满

示例2

输入

复制

8

输出

复制

2
#include<iostream>
#include<vector>
using namespace std;
/* 全局变量 */

bool Flag = true;
vector<vector<int>> Result;

void DFS(vector<int>& Vec,int target,int val){
Vec.push_back(val);
if(target == val){
Result.push_back(Vec);
Flag = false;
}
if(target - val >= 7 && Flag){
DFS(Vec,target - val,7);
}
if(target - val >= 5 && Flag){
DFS(Vec,target - val,5);
}
if(target - val >= 3 && Flag){
DFS(Vec,target - val,3);
}
Vec.pop_back();
}

int main(){
int X;
cin >> X;
vector<int> Vec;
DFS(Vec,X,7);
DFS(Vec,X,5);
DFS(Vec,X,3);
if(Result.size() == 0){
cout << "-1" << endl;
}
else{
cout << Result[0].size() << endl;
}
return 0;
}

心得:这道题涉及贪心算法+DFS+减枝

标签:target,val,--,DFS,int,Flag,Vec,装箱
From: https://blog.51cto.com/u_13121994/5798562

相关文章

  • 连续子数组的最大和+如何处理以字符为分隔符的字符串
    题目描述一个非空整数数组,选择其中的两个位置,使得两个位置之间的数和最大。如果最大的和为正数,则输出这个数;如果最大的和为负数或0,则输出0输入描述:3,-5,7,-2,8输出描述:......
  • Keras搭建CNN进行人脸识别系列(四)--为模型训练准备人脸数据
          机器学习最本质的地方就是基于海量数据统计的学习,说白了,机器学习其实就是在模拟人类儿童的学习行为。举一个简单的例子,成年人并没有主动教孩子学习语言,但随着......
  • 最长连续序列
    题目来源​​LongestConsecutiveSequence​​问题描述给定一个未排序的整数数组,找出最长连续序列的长度。例如,给出[100,4,200,1,3,2],这个最长的连续序列是[1,......
  • OpenCV-Python learning-9.图像阈值处理
    你也可以​​iframe外链​​查看。本节内容包括:常用阈值方法自适应阈值Otsu(大津法)自适应阈值​​github地址​​......
  • 从排序阵列中删除重复 II
    题目来源​​RemoveDuplicatesfromSortedArrayII​​问题描述“删除重复项目”的进阶:如果重复最多被允许两次,又该怎么办呢?例如:给定排序数列nums=[1,1,1,2,2,3]......
  • 从排序数组中删除重复项
    题目来源​​RemoveDuplicatesfromSortedArray​​题目描述给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数......
  • OpenCV-Python learning-8.颜色空间
    你也可以​​iframe外链​​查看。本节内容包括:改变色彩空间:cvtColor使用HSV对象跟踪练习......
  • 单链表翻转
    使用语言:c++。#include<iostream>usingnamespacestd;//链表structListNode{intval;ListNode*next;ListNode(intval,ListNode*next=NULL):val(val),......
  • pandas笔记(二)
    你也可以​​链接​​查看。内容包括:基本选择方式loc,iloc方式使用布尔作为索引......
  • Anaconda Navigator启动闪退
    问题描述win10新装的AnacondaNavigator启动闪退,且JupyterNotebook启动dos也会有大量警告。解决方法通过软件升级,依次输入如下命令:condaupdatecondacondaupdateanacond......