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

古董装载优化:30秒破解重量限制

古董装载问题,计算在给定总重量限制下最多能装载多少件古董。

完整代码

#include <iostream>
using namespace std;
#include <algorithm>
const int N = 10005;
double w[N];int solve1(int n, double W)
{double tmp = 0.0;int ans = 0;for (int i = 0 ; i < n ; i++){tmp += w[i];if (tmp <= W){ans++;}else{break;}}return ans;
}int main()
{int n = 8;double W = 30.0;cout << "依次输入 " << n << " 件古董重量:" << endl;;for (int i = 0 ; i < n ; i++){cin >> w[i];}sort(w,w+n);cout << "可装载数量:";cout << solve1(n, W) << endl;system("pause");return 0;
}

代码结构说明

  • 全局变量定义
    w[N] 存储古董重量,N 是数组最大容量,W 是总重量限制。

  • 核心函数 solve1
    通过遍历排序后的数组,累加重量并统计不超过 W 的古董数量。

    • tmp 记录当前累加重量。
    • ans 记录合法装载数量。
    • 当累加值超过 W 时终止循环。
  • 主函数 main

    • 初始化古董数量 n=8 和总重量限制 W=30.0
    • 输入古董重量并存储到数组 w
    • 调用 sort 对重量升序排序以优先装载轻的古董。
    • 输出 solve1 的计算结果。

改进建议

  1. 输入验证
    添加对输入重量非负的检查,避免无效数据:

    for (int i = 0; i < n; i++) 
    {cin >> w[i];if (w[i] < 0) {cout << "重量不能为负!" << endl;return -1;}
    }
    
  2. 动态内存分配
    使用 vector 替代固定数组,避免溢出风险:

    vector<double> w(n);
    
  3. 输出优化
    在排序后输出古董重量顺序,便于调试:

    sort(w.begin(), w.end());
    cout << "排序后重量:";
    for (auto x : w) cout << x << " ";
    cout << endl;
    
  4. 函数复用性
    solve1 改为通用函数,接受任意容器:

    template<typename Container>
    int solve1(const Container& weights, double max_weight) 
    {double tmp = 0.0;int ans = 0;for (auto w : weights) {tmp += w;if (tmp <= max_weight) ans++;else break;}return ans;
    }
    

示例输入输出

输入:

3.5 7.2 4.1 10.0 2.8 5.3 6.7 1.9

排序后重量:

1.9 2.8 3.5 4.1 5.3 6.7 7.2 10.0

输出:

可装载数量:5

(累加 1.9+2.8+3.5+4.1+5.3=17.6 ≤ 30.0,第6件6.7会超限)


文章转载自:

http://CBu5Nkv1.jjzxn.cn
http://y4kofcET.jjzxn.cn
http://1qYxhefP.jjzxn.cn
http://gTgGzmTj.jjzxn.cn
http://z5hAo07U.jjzxn.cn
http://qbjvhCDP.jjzxn.cn
http://sG7e7IMp.jjzxn.cn
http://hXr0F97x.jjzxn.cn
http://Y7SuTYih.jjzxn.cn
http://GJjMaHat.jjzxn.cn
http://cbFLA8WJ.jjzxn.cn
http://Mit1Sh0Q.jjzxn.cn
http://Q523e4FI.jjzxn.cn
http://qVc6nwM5.jjzxn.cn
http://Ht4otkxR.jjzxn.cn
http://ZDcZbFOd.jjzxn.cn
http://AdIwUfxG.jjzxn.cn
http://DVBUv8cC.jjzxn.cn
http://zg1qc874.jjzxn.cn
http://LSl5mbxB.jjzxn.cn
http://KoNLbFhE.jjzxn.cn
http://ofl9gEMY.jjzxn.cn
http://gdG78k7F.jjzxn.cn
http://p8OFaz2F.jjzxn.cn
http://w02nFdUD.jjzxn.cn
http://40qt0Pxr.jjzxn.cn
http://JOtfgRtM.jjzxn.cn
http://wJrkeoch.jjzxn.cn
http://0nzT7gxm.jjzxn.cn
http://bsX8oEGf.jjzxn.cn
http://www.dtcms.com/a/376998.html

相关文章:

  • Vue2手录02-指令
  • 爬虫逆向之瑞数6案例(深圳大学某某附属医院)
  • AWK工具使用与技巧指南
  • Java程序员职业发展路径与转型选择分析报告(2025年)
  • 资产管理软件哪家口碑好
  • 【实战中提升自己完结篇】分支篇之分支之无线、内网安全与QOS部署(完结)
  • 【Qt】PyQt、原生QT、PySide6三者的多方面比较
  • 多级缓存架构
  • 多模态对齐与多模态融合
  • 【MySQL】常用SQL语句
  • 教师节组诗-我不少年师已老,无报师恩仅遥忆
  • 手把手带你推导“逻辑回归”核心公式
  • 当按摩机器人“活了”:Deepoc具身智能如何重新定义人机交互体验
  • solidity得高级语法3
  • PLM 与机器视觉协同:三维模型驱动自动光学检测标准制定
  • vuecli中使用splitchunksplugin提取公共组件,vue单组件使用less scoped处理style,打包会有css顺序冲突警告
  • 元宇宙与旅游产业:沉浸式体验重构旅行全流程
  • 城市道路落叶清扫机设计【三维SW模型】【含9张CAD
  • apache poi 导出复杂的excel表格
  • 海外盲盒APP开发:如何用技术重构“惊喜经济”
  • Linux快速安装JDK1.8
  • 高可用消息队列线程池设计与实现:从源码解析到最佳实践
  • 使用nvm管理node多版本(安装、卸载nvm,配置环境变量,更换npm淘宝镜像)
  • Python 0909
  • 二进制安装MySQL 8.0指南:跨平台、自定义数据路径、安全远程访问配置
  • MySQL - 全表扫描 会发生死锁?
  • 0代码,教你三步搭建AI Agent
  • Flask 前后端分离架构实现支付宝电脑网站支付功能
  • Next.js 客户端渲染 (CSR) 与 Next.js 的结合使用
  • GitHub 镜像站点