leetcode-956. 最高的广告牌
2024-09-22 02:55:35
https://leetcode-cn.com/contest/weekly-contest-114/problems/tallest-billboard/
给出一个集合,询问能否挑出两个不重叠的子集,使得两个子集内的数字和一样,求数字和最大是多少。
一开始枚举所有集合然后dp一波果断T了。
正解是f(i,j)表示前i个数字,组成的两个集合差为j的时候较大的集合内的数字和,然后枚举一下三种情况dp即可。
一开始少算了一种情况,是把第i加在较小的集合里,仍没超过较大的集合。
class Solution {
public:
#define inf 0x3f3f3f3f
int tallestBillboard(vector<int>& rods) {
int f[][];
memset(f,-inf,sizeof(f));
f[][]=;
for(int i=;i<rods.size();++i){
for(int j=;j<=;++j){
f[i+][j]=max(f[i+][j],f[i][j]);
if(j>=rods[i]&&f[i][j-rods[i]]!=-inf)f[i+][j]=max(f[i+][j],rods[i]+f[i][j-rods[i]]);
if(rods[i]>=j&&f[i][rods[i]-j]!=-inf)f[i+][j]=max(f[i+][j],j+f[i][rods[i]-j]);
if(j+rods[i]<=&&f[i][j+rods[i]])f[i+][j]=max(f[i+][j],f[i][j+rods[i]]);
}
}
return max(,f[rods.size()][]);
}
};
最新文章
- vs2013 无法打开 源 文件 ";SDKDDKVer.h";
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
- 【安全】requests和BeautifulSoup小试牛刀
- T-SQL切割字符串方法小结 2
- matlab GUI之常用对话框(四)-- 输入对话框 inputdlg、目录对话框 uigetdir、列表对话框 listdlg
- extjs_03_grid(添加数据)
- Hadoop 使用FileSystem API 读取数据
- Java第六周学习总结
- 小技巧-WEB API第一次加载很慢
- 当你「ping 一下」的时候,你知道它背后的逻辑吗?
- ubuntu18.04搭建nfs
- Disruptor 详解
- TCP是如何保证可靠传输的
- dubbo面试题,会这些说明你真正看懂了dubbo源码
- js中判断是否包含某个字符串
- activiti实战--第一章--认识Activiti
- HTML5 Canvas ( 图形的阴影 ) shadowColor, shadowOffsetX, shadowOffsetY, shadowNlur
- Thunder——Final冲刺中间产物
- MySQL 分库备份
- iostat -x命令诊断