6-1 求解资源分配问题(动态规划法)[PTA]

这篇具有很好参考价值的文章主要介绍了6-1 求解资源分配问题(动态规划法)[PTA]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[PTA]

6-1 求解资源分配问题(动态规划法)

某公司有3个商店A、B、C,拟将新招聘的5名员工分配给这3个商店,各商店得到新员工后,每年的赢利情况如下表所示,求分配给各商店各多少员工才能使公司的赢利最大。

动态规划资源配置问题,数据结构与算法分析,动态规划,算法,贪心算法

函数接口定义:
void Plan();                            //求最优方案dp
裁判测试程序样例:
#include <stdio.h>
#include <iostream>
#define MAXM 10                //最多商店数
#define MAXN 10                //最多投入的人数
using namespace std;
int m,n;                //商店数为m,总人数为n
int v[MAXM][MAXN]={0}; 
int dp[MAXM][MAXN];
int pnum[MAXM][MAXN];

void Plan()    ;                        //求最优方案dp

void dispPlan()                    //输出最优分配方案
{
    int k,r,s;
    s=pnum[m][n];
    r=n-s;                        //r为余下的人数
    for (k=m;k>=1;k--)            //从m到1
    {
        printf("%d %d\n",k,s);
        s=pnum[k-1][r];            //求下一个阶段分配的人数
        r=r-s;                    //余下人数递减
    }
    printf("%d",dp[m][n]);
}

int main()
{
    int i,j;
    cin>>m>>n;
    for(i=0;i<=m;i++)
      for(j=0;j<=n;j++)
        cin>>v[i][j];
    Plan();
    dispPlan();      
    return 0;
}

/* 请在这里填写答案 */
输入格式:

第一行输入商店数m及员工人数n,再依次输入m+1行,每行为n+1个数,每个数(i,j)表示i商店分配j人赢利值0≤i≤m,0≤j≤n。

输出格式:

输出前m行每行两个数,分别表示商店编号及分配人数,最后一行表示公司最大赢利。

输入样例1:
3 5
0 0 0 0 0 0
0 3 7 9 12 13
0 5 10 11 11 11
0 4 6 11 12 12
输出样例1:
3 3
2 2
1 0
21

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

解题思路:

考察动态规划,要掌握bottom to up的思想。
先算出先算出i、j较小的最大dp[i][j]的值,是在哪个p的时候取的,并保存到pnum[i][j]=p;
再逐渐增大i、j,并直接运用较小ij的dp[i][j]的值进行运算。

代码如下:
void Plan(){                            //求最优方案dp
    /**********初始化**********/
    dp[m][n]=0;
    
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            pnum[i][j]=0;
            dp[m][n]=0;
        }
    }
    /*********状态转移方程*********/
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            for(int p=0;p<=j;p++){
                if(v[i][p]+dp[i-1][j-p]>=dp[i][j]){
   //bottom to up得思想,先算出ij较小的最大dp[i][j]值是在哪个p的时候取的;
   //再逐渐增大ij,并直接运用较小ij的dp[i][j]的值进行运算。
                    dp[i][j]=v[i][p]+dp[i-1][j-p];
                    pnum[i][j]=p;
                }
            }
        }
    }
}

测试用例:

动态规划资源配置问题,数据结构与算法分析,动态规划,算法,贪心算法

运行结果:

动态规划资源配置问题,数据结构与算法分析,动态规划,算法,贪心算法

编译器输出:

动态规划资源配置问题,数据结构与算法分析,动态规划,算法,贪心算法文章来源地址https://www.toymoban.com/news/detail-523702.html

到了这里,关于6-1 求解资源分配问题(动态规划法)[PTA]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spark yarn 开启动态资源分配

    不需要指定并发,只需要指定内存, 程序在运行后会动态调节并发数量,我们只需要设置一个上线即可 在spark 配置文件设置: spark.dynamicAllocation.enabled true spark.shuffle.service.enabled true 准备shuffer jar 将spark安装包中的spark--yarn-shuffle.jar 放在集群中每个节点的classpath中 yarn-site.xm

    2024年02月12日
    浏览(48)
  • [spark]spark资源分配

    hadoop2:9870 1)查看单个节点的总线程数 2)查看每个节点的内存大小 应该是32G 3)查看队列的内存占比(常用的是hive队列) 注:这个集群4个节点,每个节点8个线程,每个节点内存为32G 1、确定executor的cpu核数 每个executor的cpu设置为4(一般为3-6)比较合适 2、确定每个节点executo

    2024年02月08日
    浏览(43)
  • Docker资源管理和分配指南

    cgroups其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组(如CPU、内存、磁盘输入输出等)。 什么是Docker资源限制? 默认情况下,Docker容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源。如果不对容器资

    2024年04月11日
    浏览(41)
  • 4G LTE频带划分和国内运行商资源分配

    LTE 4G的频段划分是按照频率范围进行的,各国或地区根据自己的情况和规定,选择不同的频段进行分配。目前,全球共有44个LTE频段,每个频段都有特定的使用场景和优点,需要根据实际情况来选择合适的频段。 以下是LTE 4G的一些常见频段: 700MHz频段:适用于广域覆盖和室内

    2024年02月09日
    浏览(49)
  • PCIe简介/体系架构/工作原理/资源分配/错误定位

    目录 一、PCIe简介 二、体系结构 三、层次结构 四、工作原理 五、不同版本及传输速率、吞吐量 六、资源分配 ID资源 PCIe资源分配原理 七、Lane和Link PCIe插槽 八、MSI和MSI-X 九、SR-IOV 十、AER 十一、lspci命令 PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机内部硬件

    2024年02月16日
    浏览(46)
  • 如何通过物联网实现农业资源的精准分配?

    作者:禅与计算机程序设计艺术 近年来,随着互联网、传感网、物联网等新型信息技术的飞速发展,越来越多的人们开始关注“物联网+农业”这一领域,它将传统的信息采集、汇聚、传输、分析等过程融入到现代化生产的环节中。“物联网+农业”系统可以将各类传感器数据

    2024年02月08日
    浏览(74)
  • 深度强化学习与人工智能:如何实现高效的资源分配

    深度强化学习(Deep Reinforcement Learning, DRL)是一种人工智能技术,它结合了深度学习和强化学习两个领域的优点,以解决复杂的决策问题。在过去的几年里,DRL已经取得了显著的成果,例如在游戏、机器人控制、自动驾驶等领域的应用。在资源分配方面,DRL可以帮助企业更有效地

    2024年02月21日
    浏览(69)
  • 操作系统与云计算:实现高效的资源分配和管理

    操作系统和云计算都是现代计算机科学的核心领域。操作系统负责管理计算机资源,为应用程序提供服务,而云计算则是利用大规模网络计算资源为用户提供服务。在这篇文章中,我们将探讨操作系统与云计算之间的密切关系,以及如何实现高效的资源分配和管理。 操作系统

    2024年04月11日
    浏览(43)
  • 医疗器械外贸ERP软件:优化资源分配,提升企业竞争力

    随着医疗器械外贸业务的不断发展,外贸业务管理ERP软件已经成为了医疗器械企业必不可少的一项工具。该软件解决方案可以有效地帮助企业管理海外市场、跟进海外订单、协调供应链等关键业务。 医疗器械外贸行业管理难点: 1、法规和标准: 涉及到不同国家和地区的法规

    2024年02月13日
    浏览(49)
  • 云计算中的负载均衡技术,确保资源的平衡分配

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云计算 ✨文章内容:负载均衡技术 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 在云计算中,负载均衡是一种关键的技术,用于将网络

    2024年02月10日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包