俄罗斯套娃信封问题

给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。

请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。

说明:
不允许旋转信封。

示例:

输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出: 3
解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。
class Solution {

    public int maxEnvelopes(int[][] envelopes) {
        if(envelopes.length==0)return 0;
        if(envelopes.length==1)return 1;

        Arrays.sort(envelopes,new Comparator<int[]>(){
            public int compare(int[] a,int[] b){
                if(a[0]!=b[0]){
                    return a[0]-b[0];
                }
                else{
                    return a[1]-b[1];
                }
            }
        });
        int[] dp=new int[envelopes.length];
        int max=0;
        for(int i=0;i<envelopes.length;i++){
            dp[i]=1;
            for(int j=i-1;j>=0;j--){
                if(envelopes[i][0]>envelopes[j][0]&&envelopes[i][1]>envelopes[j][1]){
                    dp[i]=Math.max(dp[i],dp[j]+1);
                }
            }
            max=Math.max(max,dp[i]);

        }
        return max;
    }
}

原文地址:https://www.cnblogs.com/yihangZhou/p/10126761.html

时间: 2024-11-25 13:49:08

俄罗斯套娃信封问题的相关文章

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表

UVa 242 邮票和信封(完全背包)

https://vjudge.net/problem/UVA-242 题意: 输入s(每个信封能粘贴的最多邮票数量)和若干邮票组合,选出最大连续邮资最大的一个组合(最大连续邮资也就是用s张以内的邮票来凑1,2,3,4...n,如果无法凑成n+1,那么最大值也就是n了).如果有多个最大值,则优先考虑邮票数少的,其次考虑邮票面值最大的那个更小的. 思路: 完全背包问题. 完全背包是物品无限,在这里和题意相符合,每种邮票也是可以无限使用的.最大连续邮资就相当于一个背包容量,d[i]表示当最大连续邮资为

图像处理之图像切割---提取信封上的邮编

1.题目: 分割图像,提取信封上的邮编. 2.算法原理: 原创:梁毅军(西安交大图像所,[email protected]) (1) 线框提取: 输入f(x,y)为彩色图像,输出g(x,y)为灰色图像. g(x,y) = T[f(x,y).R, f(x,y).B, f(x,y).R]    T为变换函数 T(R, G, B) = max{R- (G+B)/2 , 0}; 经过T函数变换后,红色的线框被提取出来,值为255,其余颜色的点灰度值变为0. (2)字符框位置的提取:投影算法 向x轴投影 

codevs1222 信与信封的问题

题目描述 Description John先生晚上写了n封信,并相应地写了n个信封将信装好,准备寄出.但是,第二天John的儿子Small John将这n封信都拿出了信封.不幸的是,Small John无法将拿出的信正确地装回信封中了. 将Small John所提供的n封信依次编号为1,2,…,n:且n个信封也依次编号为1,2,…,n.假定Small John能提供一组信息:第i封信肯定不是装在信封j中.请编程帮助Small John,尽可能多地将信正确地装回信封. 输入描述 Input Des

洛谷P1595 信封问题

P1595 信封问题 最新讨论 = = 题目描述 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有信都装错信封共有多少种不同情况. 输入输出格式 输入格式: 一个信封数n 输出格式: 一个整数,代表有多少种情况. 输入输出样例 输入样例#1: 样例1:2 样例2:3 输出样例#1: 样例1:1 样例2:2 题解: 错位排列 本题解用的是f(n)=(n-1)*(f(n-1)+f(n-2)) 这道题的另一个公式 ans=n!(1-1/1!+1/2!-1/3!+...+(-1)^n*(1/n

OPENSSL PKCS#7(信封&amp;解信封)

1 // TestOpensslP7Envelope.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdio.h" 5 #include "string.h" 6 #include "stdlib.h" 7 8 #include <openssl/pem.h> 9 #include <openssl/pkcs7.h> 10 #include <openssl/objects.h&g

又被微信封,见识腾讯的威风

今天下午我们的www域名又被微信给封了.前天我们刚刚领略了微信的这种威风,今天微信又发威了,微信的发威逻辑简单粗暴——只要在微信中发现一个网站的违规链接,就会封了整个域名. 这种发威逻辑对于UGC(用户产生内容)的网站简直是无比霸道,用户随时都可能发布违反微信规定的内容,找出这样的内容有如大海捞针.首先我们不知道什么样的内容属于微信的违规内容:即使知道,你让我们怎么审核,我们根本无法监控哪些内容被发到了微信上:难道要我们把微信的霸道转嫁给我们的用户,只要是有可能违反微信规定的内容就不允许发布,门

[LeetCode] Russian Doll Envelopes 俄罗斯娃娃信封

Given an unsorted array of integers, find the length of longest increasing subsequence. For example, Given [10, 9, 2, 5, 3, 7, 101, 18], The longest increasing subsequence is [2, 3, 7, 101], therefore the length is 4. Note that there may be more than

codevs 1222 信与信封问题(二分图的完美匹配)

1222 信与信封问题 题目描述 Description John先生晚上写了n封信,并相应地写了n个信封将信装好,准备寄出.但是,第二天John的儿子Small John将这n封信都拿出了信封.不幸的是,Small John无法将拿出的信正确地装回信封中了. 将Small John所提供的n封信依次编号为1,2,…,n:且n个信封也依次编号为1,2,…,n.假定Small John能提供一组信息:第i封信肯定不是装在信封j中.请编程帮助Small John,尽可能多地将信正确地装回信封. 输入