week32
312 - 戳气球
class Solution {
public:
int maxCoins(vector<int>& nums) {
int n = nums.size();
nums.insert(nums.begin(), 1);
nums.push_back(1);
vector<vector<int>> f(n + 2, vector<int>(n + 2));
// 区间DP模板
for(int len = 3; len <= n + 2; len++)
for(int l = 0; len + l - 1 <= n + 1; l++)
{
int r = l + len - 1;
int reslr = nums[l] * nums[r];
for(int k = l + 1; k < r; k++)
f[l][r] = max(f[l][r], f[l][k] + f[k][r] + reslr * nums[k]);
}
return f[0][n + 1];
}
};313 - 超级丑数
263 - 丑数
264 - 丑数II
315 - 计算右侧小于当前元素的数量
316 - 去除重复字母
318 - 最大单词长度乘积
319 - 灯泡开关

Last updated
