给一个体积水,用不同体积的容器去装

news2024/11/26 1:44:13

这个有两个方案:
1.每个都装得最满,减少瓶子容积损失

//xzlist 瓶子容积排序 tj水总体积 xzzc各个体积瓶子数
public  static void Boxjs(int tj, List<Map<String,Object>> xzlist, List<Map<String,Object>> xzzc){
        boolean flg = true;
        String xzmc1="";
        Integer xzrj1=0;
        if (tj>0) {
            for (int i = 0; i < xzlist.size(); i++) {
                Integer xzrj = (Integer) xzlist.get(i).get("xzrj");
                String xzmc = (String) xzlist.get(i).get("xzmc");
                if (tj >= xzrj) {
                    xzmc1 = xzmc;
                    xzrj1 = xzrj;
                    break;
                } else {
                    if (i == xzlist.size() - 1) {
                        xzmc1 = xzmc;
                        xzrj1 = xzrj;
                    }
                }
            }
            for (Map<String, Object> zc : xzzc
            ) {
                if (zc.get("xzmc").equals(xzmc1)) {
                    zc.put("sl", ((Integer) zc.get("sl")) + 1);
                    flg = false;
                }
            }
            if (flg) {
                Map<String, Object> map = new HashMap<>();
                map.put("xzmc", xzmc1);
                map.put("sl", 1);
                xzzc.add(map);
            }
            Boxjs(tj - xzrj1, xzlist, xzzc);
        }
    }

调用

List<Map<String,Object>> xzlist=new ArrayList<>();
        List<Map<String,Object>> xzzc=new ArrayList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("xzmc", "100容积瓶子");
        map.put("xzrj",100 );
        Map<String, Object> map1 = new HashMap<>();
        map1.put("xzmc", "50容积瓶子");
        map1.put("xzrj",50 );
        Map<String, Object> map2 = new HashMap<>();
        map2.put("xzmc", "30容积瓶子");
        map2.put("xzrj",30 );
        Map<String, Object> map3 = new HashMap<>();
        map3.put("xzmc", "20容积瓶子");
        map3.put("xzrj",20 );
        Map<String, Object> map4 = new HashMap<>();
        map4.put("xzmc", "10容积瓶子 ");
        map4.put("xzrj",10);
        xzlist.add(map);
        xzlist.add(map1);
        xzlist.add(map2);
        xzlist.add(map3);
        xzlist.add(map4);

        Boxjs(151,xzlist,xzzc);
        xzzc.forEach(stm1 -> System.out.println(stm1));

在这里插入图片描述
2.少瓶子方案,使用最少瓶子:

    //xzlist 瓶子容积排序 tj水总体积 xzzc各个体积瓶子数
    public  static void LBoxjs(int tj, List<Map<String,Object>> xzlist, List<Map<String,Object>> xzzc){
        boolean flg = true;
        String xzmc1="";
        Integer xzrj1=0;
        if (tj>0) {
            for (int i = xzlist.size()-1; i >=0; i--) {
                Integer xzrj = (Integer) xzlist.get(i).get("xzrj");
                String xzmc = (String) xzlist.get(i).get("xzmc");
                if (tj <= xzrj) {
                    xzmc1 = xzmc;
                    xzrj1 = xzrj;
                    break;
                } else {
                    if (i ==0) {
                        xzmc1 = (String) xzlist.get(0).get("xzmc");
                        xzrj1 = (Integer) xzlist.get(0).get("xzrj");
                        break;
                    }
                }
            }
            for (Map<String, Object> zc : xzzc
            ) {
                if (zc.get("xzmc").equals(xzmc1)) {
                    zc.put("sl", ((Integer) zc.get("sl")) + 1);
                    flg = false;
                }
            }
            if (flg) {
                Map<String, Object> map = new HashMap<>();
                map.put("xzmc", xzmc1);
                map.put("sl", 1);
                xzzc.add(map);
            }
            LBoxjs(tj - xzrj1, xzlist, xzzc);
        }
    }

在这里插入图片描述

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

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

相关文章

Linux信号机制-2

转自&#xff1a;Linux信号处理_linux 信号处理函数_努力啃C语言的小李的博客-CSDN博客 什么是信号 信号本质上是在软件层次上对中断机制的一种模拟&#xff0c;其主要有以下几种来源&#xff1a; 程序错误&#xff1a;除零&#xff0c;非法内存访问等。 外部信号&#xff1a…

Sql 语句小课堂8:求特定字段平均值的问题

Sql 语句小课堂8&#xff1a;求特定字段平均值的问题 问题来源初始数据超标条件方案一&#xff1a;得出汇总结果方案二&#xff1a;在原有数据上附加其结果 小结 问题来源 最近老顾变得原来越咸鱼了&#xff0c;好久没去逛 CSDN 问答了&#xff0c;于是灵感枯竭&#xff0c;不…

postgresql(二):pgsql导出数据

pgsql导出数据 1、概述2、导出数据2.1、导出所有库2.2、导出指定库2.3、导出指定表 3、总结 1、概述 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 今天介绍一下使用pg数据库的命令导出数据的操作。 2、导…

今天给大家分享几款好用的时间管理APP

在现代社会&#xff0c;时间是我们最宝贵的资源之一。有效地管理时间可以提高我们的工作和学习效率&#xff0c;从而实现更好的生活和工作质量。随着技术的不断发展&#xff0c;越来越多的时间管理APP涌现出来。今天&#xff0c;我想向大家分享几款好用的时间管理APP&#xff0…

没有有效的提示词(Prompt),要 Stable Diffusion 何用?

再好的prompt&#xff0c;不如有个简单的prompt工具。 本文推荐一个日本人写的prompt插件&#xff0c;我进行了汉化&#xff0c;并补充了3000多个提示词。只需要鼠标点点就可以了&#xff01;&#xff01;&#xff01; 引子&#xff1a; 今天去看了看Stable Diffusion插件版本…

MobPush Android常见问题

配置了默认点击跳转界面&#xff0c;对所有通道都有效吗 只对MobPush、魅族、小米、华为、OPPO、VIVO通道有效&#xff0c;对FCM通道无效。 如何获取回调参数 进程存活的情况下&#xff0c;可在我们的回调监听中看到通知详情&#xff0c;可以根据回调参数进行处理。 详情请查…

阿里云ECS云服务器的云盘使用

在我阿里云控制台上&#xff0c;可以看到有额外的磁盘&#xff08;2个实例&#xff0c;3个磁盘&#xff09; 找到对应云服务实例&#xff0c;看到了云盘信息 状态显示的挂接点是&#xff1a;/dev/xvdb 进入服务器却无法找到&#xff0c;也无法挂载 执行命令&#xff1a;fdisk …

c# 实现条件编译

创建三个不同的项目配置&#xff0c;分别代表不同的平台&#xff0c;在 Visual Studio 中&#xff0c;可以通过右键单击项目&#xff0c;选择“属性”&#xff0c;然后在“生成”选项卡下配置不同的条件编译符号。 针对 Windows 平台&#xff1a;在“生成”选项卡的“条件编译…

iOS--编译

前言 iOS 开发中使用的是编译语言&#xff0c;所谓编译语言是在执行的时候&#xff0c;必须先通过编译器生成机器码&#xff0c;机器码可以直接在CPU上执行&#xff0c;所以执行效率较高。他是使用 Clang / LLVM 来编译的。LLVM是一个模块化和可重用的编译器和工具链技术的集合…

Tomcat之配置文件详解

Tomcat 目录 安装好 Tomcat 后&#xff0c;打开它的文件夹&#xff0c;可以看到以下目录 bin:存放各种启动、关闭和其它程序的脚本 conf:配置文件及相关数据文件存放的目录 lib:Tomcat 使用的库文件存放的目录&#xff0c;如存放 Servlet 规范的 API logs:默认日志文件存放…

centos 配置好网络后无法ping 通百度

问题&#xff1a; ping 自己配置的ip地址能够ping通&#xff0c;ping 连接的WiFi &#xff08;可以上外网&#xff09;地址也能ping通&#xff0c;但是ping www.baidu.com 却ping不同&#xff1b; 配置 处理方法&#xff1a; 我的虚拟机开通了三张网卡&#xff0c;150段…

更新NGINX域名证书文件

背景&#xff1a; 由于域名正式认证即将要到期&#xff0c;需要更新基于nginx的域名证书文件。 一、更新nginx域名证书文件 1、查看对应域名使用的正式文件名 # 查看使用的域名证书文件 # 我的环境配置https的nginx相关配置文件是&#xff1a;ierp_https.confcat /usr/loca…

Vue3+Vite+Pinia+Naive后台管理系统搭建之二:scss 的安装和使用

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步 Vue3.0 基础入门&#xff0c;快速入门。 1. 安装依赖 yarn add sass -D // or npm install sass -D 2. 页面样式初始化 reset.scss /* 新建 src/assets/style/reset.scss */ /* 页面样式初始化 */ html, body, div, s…

前端Vue自定义水平步骤条组件

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

edk2 security boot校验流程

edk2整体架构 关于安全校验的核心逻辑 Code\Edk2\MdeModulePkg\Universal\SecurityStubDxe\SecurityStub.c Status gBS->InstallMultipleProtocolInterfaces (&mSecurityArchProtocolHandle,&gEfiSecurity2ArchProtocolGuid,&mSecurity2Stub,&gEfiSecurit…

神经网络架构设计常见问题及解答

如果你是人工神经网络 (ANN) 的初学者&#xff0c;你可能会问一些问题。 比如要使用的隐藏层数量是多少&#xff1f; 每个隐藏层有多少个隐藏神经元&#xff1f; 使用隐藏层/神经元的目的是什么&#xff1f; 增加隐藏层/神经元的数量总是能带来更好的结果吗&#xff1f; 使用什…

JAVA_SE 银行存钱(控制台程序)

仓库地址&#xff1a;https://gitee.com/ThMyGitee/Bank.git CSDN的友友们&#xff0c;项目如果适合您的话&#xff0c;麻烦给个小小的Star&#xff0c;谢谢啦&#xff01; JAVA_SE 银行存钱(控制台程序) 1.流程图 2.开发环境 JDK1.8 IDEA 2019.33.界面运行 模拟转账业务&…

复习V2+V3之——02 事件处理

事件处理 事件的基本使用 1.使用v-on:xxx 或者 xxx 绑定事件&#xff0c;其中xxx是事件名 一般来说用 xxx 这种方式多一点 2.事件的回调函数需要配置在 methods 对象中&#xff0c;最终会在 vm 上面 3.methods中配置的函数&#xff0c;不要用箭头函数&#xff01;否则this…

python爬虫哪个库用的最多

目录 常用的python爬虫库有哪些 1. Requests&#xff1a; 2. BeautifulSoup&#xff1a; 3. Scrapy&#xff1a; 4. Selenium&#xff1a; 5. Scrapy-Redis&#xff1a; 哪个爬虫库用的最多 Scrapy示例代码 总结 常用的python爬虫库有哪些 Python拥有许多常用的爬虫库…

node版本控制工具nvm使用笔记

由于不同的项目所需要的node环境不同&#xff0c;所以在运行支持node 12或者node 16版本的项目时卸载安装不同版本的node非常麻烦&#xff0c;恰巧公司有一个热心的同事告诉我可以使用nvm来进行版本控制&#xff0c;我使用了之后发现确实好用&#xff0c;写一篇笔记记录一下。 …