题目链接:力扣
https://leetcode-cn.com/problems/russian-doll-envelopes/
题意:
给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。
当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。
请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。
注意:不允许旋转信封。
方法: 动态规划,序列DP
class Solution {
public:
int maxEnvelopes(vector<vector<int>>& envelopes) {
sort(envelopes.begin(),envelopes.end());//将信封从小到大排序
int size = envelopes.size();
vector<int> dp(size,1);//动态规划向量,dp[i]表示以i结尾的序列的最大长度
int maxL = 1;
for(int i=1;i<size;i++)
{
for(int j=0;j<i;j++)
{
if(envelopes[j][0]<envelopes[i][0]&&envelopes[j][1]<envelopes[i][1])
{
dp[i] = max(dp[i],dp[j]+1);
}
}
maxL = max(dp[i],maxL);
}
return maxL;
}
};

该博客探讨了LeetCode中的354题——俄罗斯套娃信封问题,主要讲解如何使用动态规划解决这个问题。内容包括题目的具体描述,不允许旋转信封的条件,以及利用动态规划求解的最大嵌套信封数量的思路。
670

被折叠的 条评论
为什么被折叠?



