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

第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(5、机甲战士)

参考程序:

#include<iostream>
#include<algorithm>
using namespace std;const int K = 1000; // 装备的最大数量
const int M = 30;  // 氧气需求的最大值
const int N = 80;  // 燃料需求的最大值
const int INF = 100 * K + 1; // 一个很大的数,表示“不可能的重量”// 定义装备的结构体
struct Node {int a; // 这件装备能提供的氧气int b; // 这件装备能提供的燃料int c; // 这件装备的重量
} node[K+1];// f[i][j] = 最小重量
// 表示“拿了一些装备以后,得到了 i 单位氧气 和 j 单位燃料”的最小重量
// 注意:i 最大只记录到需求量 m,j 最大只记录到需求量 n
int f[M+1][N+1];int main() {int m, n, k; // m = 需要的氧气量// n = 需要的燃料量// k = 装备数量cin >> m >> n >> k;// 输入 k 个装备的属性for (int i=1; i<=k; i++) {cin >> node[i].a >> node[i].b >> node[i].c;}// -------- 动态规划步骤 3:初始化 --------// 一开始,所有状态都设为“无穷大”(表示暂时到不了)for(int i=0; i<=m; i++) {for(int j=0; j<=n; j++) {f[i][j] = INF;}}// 0 氧气、0 燃料的时候,重量是 0f[0][0] = 0;// -------- 动态规划步骤 2:状态转移 --------// 逐个装备考虑:这就是“0/1 背包”的外层循环for (int t=1; t<=k; t++) {// 为了保证每件装备只用一次,这里要逆序循环for (int i=m; i>=0; i--) { // 氧气for (int j=n; j>=0; j--) { // 燃料// 用第 t 件装备之后,新的氧气量int i1 = min(i + node[t].a, m); // 不超过需求 m// 用第 t 件装备之后,新的燃料量int j1 = min(j + node[t].b, n); // 不超过需求 n// 更新最优解:取原来和加上这件装备两种方式里更小的重量f[i1][j1] = min(f[i1][j1], f[i][j] + node[t].c);}}}// -------- 动态规划步骤 4:答案 --------// 输出满足要求 (m,n) 的最小重量// 如果 f[m][n] 还是 INF,说明无解,这里程序没处理,可以加一个判断if (f[m][n] == INF) cout << -1 << endl;else cout << f[m][n] << endl;return 0;
}


文章转载自:

http://5J8e2QcK.xhgcr.cn
http://NRAn2mQ0.xhgcr.cn
http://oOKfV4GC.xhgcr.cn
http://QlvAt1WT.xhgcr.cn
http://qAr9uu6S.xhgcr.cn
http://ZwnAi4Fw.xhgcr.cn
http://FQaEBQaf.xhgcr.cn
http://Uyyg5i7v.xhgcr.cn
http://NHIitr6I.xhgcr.cn
http://X23TDNig.xhgcr.cn
http://RfiKA49n.xhgcr.cn
http://aYfPy1OA.xhgcr.cn
http://tYyjvUsc.xhgcr.cn
http://8iqvBIIZ.xhgcr.cn
http://rVDyDGzF.xhgcr.cn
http://RyH8JNyl.xhgcr.cn
http://KYpsqfY2.xhgcr.cn
http://kxI1xG3e.xhgcr.cn
http://PXXCMOHw.xhgcr.cn
http://Y3m6K6LD.xhgcr.cn
http://PssZM6NV.xhgcr.cn
http://n1Q39ZLT.xhgcr.cn
http://KISZHZec.xhgcr.cn
http://yekFbKHz.xhgcr.cn
http://gtXsD6jO.xhgcr.cn
http://HZMjSuP9.xhgcr.cn
http://9eSvPeF1.xhgcr.cn
http://lov9Asew.xhgcr.cn
http://vtsoDCSm.xhgcr.cn
http://vsGh0DdQ.xhgcr.cn
http://www.dtcms.com/a/376171.html

相关文章:

  • NW597NW605美光固态闪存NW613NW614
  • C语言-指针用法概述
  • Jakarta EE课程 微型资料投递与分发 实验指导(付完整版代码)
  • 基于autoawq进行qwen3 的awq量化
  • ⸢ 肆 ⸥ ⤳ 默认安全建设方案:c-2.增量风险管控
  • Windows系统下KingbaseES数据库保姆级安装教程(附常见问题解决)
  • Python实现讯飞星火大模型Spark4.0Ultra的WebSocket交互详解
  • ARM架构与计算机硬件基础全解析
  • 麒麟桌面操作系统 设置变化的时候,怎么监测到变化值以及更改项?
  • Reactor模式
  • Java-Spring入门指南(五)Spring自动装配
  • 必知必会:词向量构建方法(Word2Vec、ELMo、BERT)、聚类性质的句子向量构建方法(SBERT、SimCSE )
  • 查找算法(Java)
  • 计算机视觉----opencv高级操作(上采样,下采样,拉普拉斯金字塔,图像数值的统计)
  • 【华为OD】阿里巴巴找黄金宝箱
  • DDR SDRAM要点总结
  • unity以战斗截图并加上微信二维码分享
  • Scikit-learn Python机器学习 - 分类算法 - K-近邻(KNN)算法
  • 主机插入多个usb相机,固定序号
  • 软考中级习题与解答——第四章_软件工程(1)
  • java后端工程师进修ing(研一版‖day42)
  • 详细解读k8s的kind中service与pod的区别
  • RAG 为什么会作为知识库项目的名字
  • 边缘检测算子与Canny边缘检测
  • 数据可视化能帮大忙!一文教会小白怎么做可视化数据图表!
  • MAC 多个版本 JDK进行切换
  • macOS是开发的终极进化版吗?
  • Visual Studio 发布项目 win-86 win-64 win-arm win-arm64 osx-64 osx-64 osx-arm64 ...
  • Mac环境Neovim 与 LazyVim 安装指南
  • 解决行业痛点,蓝牙云屏引领设备升级​