动态规划基础之挖金矿问题

2023-11-09

问题:有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人数也不同(情况如下图)。

金矿编号 黄金储量 需要人数
1 500 5
2 200 3
3 300 4
4 350 3
5 400 5

参与挖矿工人的总数是10人。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半金矿。要求用程序求解出,要想得到尽可能多的黄金,应该选择挖取哪几座金矿?

代码如下:

#include<iostream>
using namespace std;
int main()
{
	int n=5,w=10;                            //金矿数,挖矿工人总数
	int p[]={0,5,3,4,3,5};                    //每个矿需要的工人数
	int v[]={0,500,200,300,350,400};  //每个矿的价值
	int Preresult[19];
	int t;
	for(int i=1;i<=10;i++)
	{
		if(i<p[1])
		{
			Preresult[i]=0;
		}
		else
		{
			Preresult[i]=v[1];
		}
	}
	int result[19]={0};
	Preresult[0]=0;
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<=w;j++)
		{
			//这一处理是避免因访问下标为负的元素而产生异常或者指定的存储单元意外存在数据影响最终结果
			if(j-p[i]<0)
			{
				t=-102876;
			}
			else
			{
				t=Preresult[j-p[i]];
			}
	        result[j]=max(Preresult[j],t+v[i]);
		}
		for(int k=1;k<=10;k++)
		{
			Preresult[k]=result[k];
		}

	}
	cout<<result[10]<<endl;
system("pause");
return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态规划基础之挖金矿问题 的相关文章

随机推荐

  • Windows 下设置自定义域名解析到指定 IP

    Windows 下设置自定义域名解析到指定 IP 一 操作步骤 1 定位到 host文件 2 编辑 host文件属性 3 添加解析文件 域名 4 重启电脑 5 在命令行中测试域名即可 导言 记录一下 Windows下设置域名解析到指定 IP
  • 二次封装一个比较通用的elementUI表单

    一下代码仅添加input和select 如有需要还可以加入单选多选日期等
  • cocos2dx linux eclipse,win7下在eclipse中搭建cocos2d-x开发环境

    1 eclipse下载 进入eclipse官网下载 Eclipse standard 4 4 下载页面 3 Android SDK下载 http developer android com sdk index html 也可以下捆绑的 ec
  • Android快速编译调试framework.jar等系统包的步骤

    引言 前段时间在调试android9的系统源码 修改完了framework service等路径下的源码后 编译生成system img 但这种方式需要把system img从服务器上Down下来 再让设备进入fastboot模式 线刷 调
  • Selenium+Pytest自动化测试框架实战

    前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础 至少明白类与对象 封装继承 一定的selenium基础 本篇不讲selenium 不会的可以自己去看selenium中文翻译网 一 测试框架简介 测试框
  • vue2实现百度地图定位

    用的是vue2的地图定位插件 https dafrok github io vue baidu map zh control city list 1 首先肯定是先下载了 npm i vue baidu map S 2 下载完记得全局引入 在
  • Qt 插入Label到指定位置

    QLabel label new QLabel this label gt setFrameStyle QFrame Panel QFrame Sunken label gt setText first line nsecond line
  • [C++]中介者模式

    中介者模式 Mediator Pattern 是用来降低多个对象和类之间的通信复杂性 这种模式提供了一个中介类 该类通常处理不同类之间的通信 并支持松耦合 使代码易于维护 中介者模式属于行为型模式 github源码路径 https gith
  • VSCode配置C语言环境(完整版)

    基本步骤 要在VSCode中配置C语言环境 我们首先可能要一个VSCode 废话 所以先下载安装一个VSCode 然后肯定需要相关插件 因为VSCode不能直接拿来写C 然后任何语言的程序在运行前都需要编译 那还需要一个编译器 很可惜VSC
  • (Python)蚁群算法解决旅行商问题(ACO-TSP)

    蚁群算法又称蚂蚁算法 容易与其他算法相结合 但也存在收敛速度慢 容易陷入局部最优等缺点 coding utf 8 import random import copy import time import sys import math im
  • 【刷题】华为笔试面试机考 [HJ29] - 字符串加解密

    题目地址 点击跳转 题目描述 1 对输入的字符串进行加解密 并输出 2 加密方法为 当内容是英文字母时则用该英文字母的后一个字母替换 同时字母变换大小写 如字母a时则替换为B 字母Z时则替换为a 当内容是数字时则把该数字加1 如0替换1 1
  • 【性能测试】第五篇

    JMeter环境安装 安装JDK 1 JDK下载 官网下载 http www oracle com 提示 下载时注意电脑系统是32位还是64位 桌面 计算机 右击 属性 查看 系统类型 2 安装JDK 双击安装包进行安装 所有步骤选择默认选
  • AVL树的插入操作(四种情况)

    目录 前言 一 AVL树简介 平衡因子bf 二 AVL树的插入操作 不包含重复值 1 找到要插入的位置 和普通的二叉搜索树一样 2 平衡化 情况1 右旋 Single Right Rotation 情况2 左旋 Single Left Ro
  • ubuntu shell实现加减乘除

    bin sh a 8 b 4 c expr a b 乘法 c expr a b 加法 c expr a b 减法 c expr a b 除法
  • 【Windows】 谷歌翻译停服后,chrome无法自动翻译?解决办法来了~

    早前蓝点网提到谷歌翻译中国版和谷歌地图中国版同时停服 此次停服也影响到谷歌浏览器翻译功能的使用 谷歌给出的官方回应是谷歌翻译和谷歌地图的中国版使用率都太低 既然使用率太低那直接停服也情有可原 笑笑 只是谷歌浏览器内置的翻译功能也需要调用谷歌
  • LeetCode每日一题:1462. 课程表 IV(2023.9.12 C++)

    目录 1462 课程表 IV 题目描述 实现代码与解析 拓扑排序 原理思路 1462 课程表 IV 题目描述 你总共需要上 numCourses 门课 课程编号依次为 0 到 numCourses 1 你会得到一个数组 prerequisi
  • KVM-6、virsh 命令及功能详解

    1 虚拟机管理操作 attach device 从XML文件附加设备 attach disk 附加磁盘设备 attach interface 连接网络接口 autostart 自动启动一个域 blkdeviotune 设置或查询块设备I O
  • IDEA报错Project lease-web: there is circular dependency between tests of ‘service-util‘ module, tests

    项目场景 当我创建多个模块时 为了模块化管理利于模块复用 我一层包一层 问题描述 例如 当我要运行的时候发现报错 Project lease web there is circular dependency between tests of
  • Linux 音视频开发杂记之二-使用FFmpeg

    FFmpeg简介 FFmpeg是一套可以用来记录 转换数字音频 视频 并能将其转化为流的开源计算机程序 采用LGPL或GPL许可证 它提供了录制 转换以及流化音视频的完整解决方案 ubuntu下FFmpeg下载 编译并安装 1 基础依赖库安
  • 动态规划基础之挖金矿问题

    问题 有一个国家发现了5座金矿 每座金矿的黄金储量不同 需要参与挖掘的工人数也不同 情况如下图 金矿编号 黄金储量 需要人数 1 500 5 2 200 3 3 300 4 4 350 3 5 400 5 参与挖矿工人的总数是10人 每座金