算法–切割的数组

算法–切割的数组

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。


标题来源:编程之美2.18

有一个无序的,元素个数为2n的正整数的数组,要求:

怎样能把这个数组切割为元素个数为n的两个数组,使得两个子数组的和尽量接近。

解析:由于两个子数组的和是一定的,等于整个数组的和。如今要求使得两个字数组的和尽量的接近,也就意味着要从当中选出n个数使得这n个数的和尽可能的接近sum/2,最好还是设为从小于sum/2的方向接近。于是。这就是一个01背包的问题:

如今有2N个物品,每一个物品的重量为A[i],有一个背包的大小为sum/2,如今从中挑选出N个物品,使得背包尽可能的被装满。

于是定义递推式为:

dp[i][j][v] = max(dp[i-1][j][v], dp[i-1][j-1][v-A[i]]+A[i]);

dp[i][j][v] :从前i个物品中选择j个,重量不大于v的最大的和。

上述print部分是在打印当中的一个子数组。返回的是终于的两个数组的最小的差值。

时间复杂度为: O(N*N*sum)

拓展:假设上述代码仅仅是要求计算终于的差值,而不须要打印出结果数组的话。那么我们就能够将时间复杂度减少到N*sum.

代码为:


终于的结果是f[N][v]==true的最大的v的值即为所求。(v是从sum/2開始依次减小)。


版权声明:本文博主原创文章。博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117122.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 单源最短路径dijkstra算法_dijkstra是谁

    单源最短路径dijkstra算法_dijkstra是谁年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用 10000 个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:”嗯,如果你能够替我弄到大祭司的皮袄,我可以只要 8000 金币。如果你能够弄来他的水晶球,那么只要 5000 金币就行了。”探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,他可以降低价格。探险家于是又跑到其他地方,其他人也提出了类似的要求,或者直接用金币换,或

    2022年8月9日
  • 在Ubuntu 18.04上编译Linux内核

    在Ubuntu 18.04上编译Linux内核一、环境说明编译环境我选择了Ubuntu18.04的虚拟机,内核截止2018-10-14最新版为4.18.14,笔者即将编译这个版本请确保磁盘空间足够,笔者之前20G编译到最后空间不足,还得重来如果你想要查看您的空间大小或者扩充磁盘,请查看我的另一篇文章https://blog.csdn.net/qq_36290650/article/details/83057832二、编译步骤…

    2022年7月23日
  • Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    2021年11月22日
  • PHP常见面试题_php面试常问面试题

    PHP常见面试题_php面试常问面试题一.基本知识点1.1HTTP协议中几个状态码的含义:503500401403404200301302。。。200:请求成功,请求的数据随之返回。301:永久性重定向。302:暂时行重定向。401:当前请求需要用户验证。403:服务器拒绝执行请求,即没有权限。404:请求失败,请求的数据在服务器上未发现。500:服务器错误

    2022年8月27日
  • vuecli3配置webpack_vue不混淆如何配置

    vuecli3配置webpack_vue不混淆如何配置前言如果我们想在webpack中使用vue,就需要在webpack中配置vue配置vue首先,我们需要在项目中安装vue,安装命令如下:npminstallvue–save安装完成后

    2022年7月29日
  • 笔试逻辑推理选择题_应聘逻辑测试题目及答案

    笔试逻辑推理选择题_应聘逻辑测试题目及答案【笔试面试】75道逻辑推理题及答案更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com啰嗦:昨天公司开全球研发中心实习生沟通会,其中有个环节是做逻辑推理竞猜,还是得平时

    2022年8月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号