用c++实现装箱问题、数字回转方阵

3.4.1 装箱问题


【问题】有一个工厂制造的产品形状都是长方体,一共有6种型号,每种型号长方体的长和宽分别是1×1、2×2、3×3、4×4、5×5、6×6,高都是h。这些产品使用统一规格的箱子进行包装,箱子的长、宽和高分别是6、6和h。对于每个订单工厂希望用最少的箱子进行包装。每个订单包括用空格分开的6个整数,分别代表这6种型号的产品数量。输出是包装需要箱子的个数。
【想法】这个问题很难建立一个数学模型,只能模拟包装过程,分析装入6种产品后箱子的剩余空间。装箱情况分析如表3-1所示

【算法】设k1、k2、k3、k4、k5、k6。分别表示6种型号的产品数量,x和y分别表示长宽为2和1的空位数量,n表示需要的箱子个数,算法如下。
算法:装箱问题 Packing 
输入:6种型号的产品数量k1、k2、k3、k4、k5、k6
输出:箱子个数n
1.n=装人长宽为3×3、4×4、5×5、6×6所需箱子数;
2.x=n个箱子剩余2×2的空位数;
3.如果k2>x,则n=n+(k2-x个产品需要的箱子数);
4.y=n个箱子剩余1X1的空位数;
5.如果k1>y,则n=n+(k1-y个产品需要的箱子数);
6.输出箱子个数n;
【算法分析】算法Packing所有操作步骤都是简单的计算,时间复杂度为O(1)。

【算法实现】设变量k1、k2、k3、k4、k5和k6分别表示6种型号的产品数量,变量x和y分别表示长宽为2和1的空位数量,变量n表示需要的箱子个数。设数组p2[4]存储装入3×3的产品个数分别是4、1、2、3时箱子剩余2×2的空位数。注意,程序中所有的整除都应该保证向上取整。程序如下。

#include <iostream>
using namespace std;

// 计算需要箱子数的函数
int Packing(int k1, int k2, int k3, int k4, int k5, int k6) {
    int boxes = 0;
    // 计算每种型号产品需要的箱子数
    for (int i = 1; i <= 6; i++) {
        boxes += k1 / i;
        if (k1 % i!= 0) {
            boxes++;
        }
    }
    return boxes;
}

int main() {
    int k1, k2, k3, k4, k5, k6;
    std::cout << "请输入 6 种型号产品的数量(用空格分隔):" << std::endl;
    std::cin >> k1 >> k2 >> k3 >> k4 >> k5 >> k6;

    int boxes = Packing(k1, k2, k3, k4, k5, k6);
    std::cout << "需要的箱子数为:" << boxes << std::endl;

    return 0;
}

3.4.2 数字回转方阵  

【问题】n阶数字回转方阵是将数字1置于方体的左上角,然后从1开始递增,将n的平方个整数填写到n阶方阵中,偶数层从第1行开始,先向下再折转向左,奇数层从第1列开始先向右再折转向上,呈首尾相接,图3-5所示为一个5阶数字回转方阵。

代码如下。

#include <iostream>
using namespace std;
// 填充矩阵的函数
void fillMatrix(int z[100][100], int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            z[i][j] = i * n + j + 1;  // 使用简单的行乘列加偏移的方式填充数字
        }
    }
}

int main() {
    int n;
    cout << "请输入矩阵行列数:";
    cin >> n;

    // 检查输入是否为正整数
    if (n <= 0) {
        cout << "无效的矩阵行数,请输入正整数。" << endl;
        return 1;
    }

    int z[100][100];  // 定义矩阵

    fillMatrix(z, n);  // 调用填充矩阵的函数

    // 改进矩阵输出格式
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout   << z[i][j] << " ";  // 使用 setw 进行对齐
        }
        cout << endl;
    }

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝屏分析】WHEA_UNCORRECTABLE_ERROR 问题分析与解决

背景信息 电脑名字电脑类型厂商使用时间magicbook14 2020款 R5 4500U笔记本电脑荣耀HONOR3年9个月 内存CPUGPU硬盘焊死在主板上焊死在主板上集显PCIe 4.0 NVMe M.2 固态 软硬件错误源确定 电脑莫名频繁随机蓝屏&#xff0c;由于在软件环境上无迹可寻推测是硬件问题 蓝屏画面…

Windows系统部署hMailServer邮件服务结合内网穿透实现公网收发邮件

文章目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpola…

运动想象 (MI) 迁移学习系列 (9) : 数据对齐(EA)

运动想象迁移学习系列:数据对齐&#xff08;EA&#xff09; 0. 引言1. 迁移学习算法流程2. 欧式对齐算法流程3. 与RA算法进行对比4. 实验结果对比5. 总结欢迎来稿 论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/8701679 论文题目&#xff1a;Transfer Le…

数据结构:链式二叉树

对于二叉树而言,如果不是完全二叉树,就不再适合用数组存储了 二叉树结构 typedef struct BinTreeNode {int val;struct BinTreeNode* left;struct BinTreeNode* right; }BTNode; 二叉树的遍历 顺序 访问顺序(n NULL) 1.前序 根,左子树…

软考81-上午题-【面向对象技术3-设计模式】-行为型设计模式01

一、行为型设计模式一览 二、责任链模式 2-1、意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 1-2、结构 1-3、代码实现 1-4、适…

3D产品配置器能为企业的客户带来什么好处?

3D产品配置器能够为企业的客户带来多重好处&#xff0c;提升他们的整体购物体验和满意度。 主要优势分析&#xff1a; 1、 提升购物体验&#xff1a;3D产品配置器通过提供交互式的3D可视化体验&#xff0c;使客户能够从不同角度查看和理解产品&#xff0c;从而提升他们的购物体…

银行信息系统应用架构导论-引用

一级目录二级目录金融标准和参考文档一、银行企业级应用系统架构规划企业级应用系统架构规划《金融科技发展规划&#xff08;2022-2025年&#xff09;&#xff08;2022年1月中国人民银行印发&#xff09;》 《关于银行业保险业数字化转型的指导意见&#xff08;2022年1月中国银…

Python图像处理【23】分布式图像处理

分布式图像处理 0. 前言1. Dask 简介2. 使用 Dask 进行分布式图像处理2.1 将 RGB 图像块转换为灰度图像块2.2 使用分布式 Sobel 滤波器检测图像边缘 小结系列链接 0. 前言 Python 已逐渐成为数据分析/处理领域中的主要语言&#xff0c;这得益于 Python 丰富的第三方库&#xf…

【对顶队列】【中位数贪心】【前缀和】100227. 拾起 K 个 1 需要的最少行动次数

本文涉及知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 对顶队列&#xff08;栈&#xff09; 分类讨论 LeetCode100227. 拾起 K 个 1 需要的最少行动次数 给你一个下标从 0 开始的二进制数组 nums&#xff0c;其长度为 n &#x…

python redis中blpop和lpop的区别

python redis中lpop()方法是获取并删除左边第一个对象。 def lpop(self,name: str,count: Optional[int] None,) -> Union[Awaitable[Union[str, List, None]], Union[str, List, None]]:"""Removes and returns the first elements of the list name.By de…

VR历史建筑漫游介绍|虚拟现实体验店加盟|VR设备购买

VR历史建筑漫游是一种利用虚拟现实技术&#xff0c;让用户可以身临其境地参观和探索历史建筑的体验。通过VR头显和相关设备&#xff0c;用户可以在虚拟环境中自由移动和互动&#xff0c;感受历史建筑的真实氛围和文化内涵。 在VR历史建筑漫游中&#xff0c;您可以选择不同的历史…

为什么手机和电视ip地址不一样

在数字化时代&#xff0c;我们每天都会与各种电子设备打交道&#xff0c;其中最常见的就是手机和电视。当我们连接到互联网时&#xff0c;这些设备都会被分配一个独特的IP地址&#xff0c;用于在网络上进行标识和通信。然而&#xff0c;您可能已经注意到&#xff0c;即使手机和…

基于java+springboot+vue实现的高校教师工作量管理系统(文末源码+Lw+ppt)23-451

摘 要 高校教师工作量管理系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的java进行编写&#xff0c;使用了springboot框架。该系统从两个对象&#xff1a;由管理员和教师来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对…

vue2点击左侧的树节点(el-tree)定位到对应右侧树形表格(el-table)的位置,树形表格懒加载

左侧树代码 <el-tree :data"treeData" node-key"id" default-expand-all"" //节点默认全部展开:expand-on-click-node"false" //是否在点击节点的时候展开或者收缩节点:props"defaultProps" node-click"handleNodeC…

《LeetCode热题100》笔记题解思路技巧优化_Part_2

《LeetCode热题100》笔记&题解&思路&技巧&优化_Part_2 &#x1f60d;&#x1f60d;&#x1f60d; 相知&#x1f64c;&#x1f64c;&#x1f64c; 相识&#x1f622;&#x1f622;&#x1f622; 开始刷题普通数组&#x1f7e1;1. 最大子数组和&#x1f7e1;2. 合…

【FX110】突发:经纪商CAPITAL.COM暂停接受英国客户

经纪商 Capital.com 宣布暂时停止接收来自英国的新客户。 当访问英国的Capital.com网站并尝试开设账户时&#xff0c;用户会收到一条消息&#xff0c;指出该公司“已决定暂时暂停在英国接纳新客户”。 声明表示&#xff0c;“作为一家企业&#xff0c;我们发展迅速&#xff0c;…

无人机三维建模过程中注意事项

无人机三维建模是指利用无人机技术进行三维建模&#xff0c;该方法通过无人机搭载的多种传感器&#xff0c;如摄像头、激光扫描仪等&#xff0c;获取建筑物的多角度影像数据&#xff0c;然后利用计算机视觉技术和三维重建算法&#xff0c;将这些影像数据转化为高精度的三维模型…

【送书福利第五期】:ARM汇编与逆向工程

文章目录 &#x1f4d1;前言一、ARM汇编与逆向工程1.1 书封面1.2 内容概括1.3 目录 二、作者简介三、译者介绍&#x1f324;️、粉丝福利 &#x1f4d1;前言 与传统的CISC&#xff08;Complex Instruction Set Computer&#xff0c;复杂指令集计算机&#xff09;架构相比&#…

ARM Cortex R52内核 01 概述

ARM Cortex R52内核 01 Introduction 1.1 Cortex-R52介绍 Cortex-R52处理器是一种中等性能、有序、超标量处理器&#xff0c;主要用于汽车和工业应用。它还适用于各种其他嵌入式应用&#xff0c;如通信和存储设备。 Cortex-R52处理器具有一到四个核心&#xff0c;每个核心实…

C#装箱和拆箱

一&#xff0c;装箱 装箱是指将值类型转化为引用类型。 代码如下&#xff1a; 装箱的内部过程 当值类型需要被装箱为引用类型时&#xff0c;CLR&#xff08;Common Language Runtime&#xff09;会为值类型分配内存&#xff0c;在堆上创建一个新的对象。值类型的数据会被复…