Maximum_Length_of_Pair_Chain

来源:互联网 发布:大数据编程 书籍推荐 编辑:程序博客网 时间:2024/06/06 19:19

题目描述:

  You are given n pairs of numbers.
  In every pair, the first number is always smaller than the second number.
  Now, we define a pair (c, d) can follow another pair (a, b) if and only if b < c.
  Chain of pairs can be formed in this fashion.
  Given a set of pairs, find the length longest chain which can be formed.
  You needn't use up all the given pairs. You can select pairs in any order.
    (给你一个pair对数组,若存在(a, b) (c, d) && b < c 那么就能构成一条链,求最长的链的长度)
Example 1:

Input: [[1,2], [2,3], [3,4]]
Output: 2
Explanation: The longest chain is [1,2] -> [3,4]

Note:
    The number of given pairs will be in the range [1, 1000].

PS:这个pair对数对是在排序之后找最长链,第一次没有排序提交之后显示[[2,3],[3,4],[1,2]]的返回值为2,所以可知OJ系统判定是排序之后的最长链。

思路:典型动态规划的题目,递推式:chain[i] = Math.max(chain[i], chain[j]+1)和max = Math.max(max,chain[i])。chain[i]代表到包含i元素的最长链,max则是真正的最长链,第一个递推式的意思是如果i元素可以链在j元素上那么就把chain[i]就可以表示为chain[j]+1,并通过Math.max函数找该点的最大值,而第二个递推式则是在这些点中找最大链。

public class Maximum_Length_of_Pair_Chain {public static void sort(int a[][]){for(int i=0;i<a.length-1;i++)          for(int j=0;j<a.length-1-i;j++)             if(a[j][0]>a[j+1][0])             {                int t=a[j][0];                a[j][0]=a[j+1][0];                  a[j+1][0]=t;                t=a[j][1];                a[j][1]=a[j+1][1];                  a[j+1][1]=t;            }}public static int findLongestChain(int[][] pairs) {if(pairs.length == 0||pairs == null)return 0;sort(pairs);int max = 1;int chain[] = new int[pairs.length];for(int i=0;i<chain.length;i++)chain[i] = 1;        for(int i=1;i<pairs.length;i++)        {        for(int j=0;j<i;j++)        {        if(pairs[i][0]>pairs[j][1])        chain[i] = Math.max(chain[i], chain[j]+1);        }        max = Math.max(max,chain[i]);        }return max;    }public static void main(String[] args) {int pairs[][] = {{-6,9},{1,6},{8,10},{-1,4},{-6,-2},{-9,8},{-5,3},{0,3}};System.out.println(findLongestChain(pairs));}}

本题和Largest_Divisible_Subset是同一类型。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 猪体温低不吃食怎么办 小孩发烧咳嗽怎么办吃什么药 大晚上发烧39度怎么办 胃受凉了老打嗝怎么办 大人发低烧怎么办如何退烧 吃了退热药不退热怎么办 猪持续高烧不退怎么办 猪感冒了不吃食怎么办 6岁儿童发烧38度怎么办 5岁儿童发烧38度怎么办 7岁儿童发烧38度怎么办 儿童发烧到38度怎么办 4岁儿童发烧38度怎么办 9岁儿童发烧38度怎么办 5儿童发烧38度怎么办 咳嗽了20多天怎么办 嘴角烂了怎么办涂什么药 感冒发烧到39度怎么办 6岁宝宝发烧头痛怎么办 生完孩子耻骨疼怎么办 顺产底下外阴红肿伤口流脓怎么办 产后便秘怎么办什么方法最有效 一周岁宝宝拉肚怎么办 三岁宝宝拉水怎么办 喝了过期的青汁怎么办 吃了黑心的苹果怎么办 新生儿两天没拉大便怎么办 贝亲奶瓶不漏怎么办 满月婴儿吃多了怎么办 婴儿吃撑了哭闹怎么办 新生儿吃撑了怎么办啊 新生儿吃了奶粉不吃奶怎么办 新生儿不吃奶也不吃奶粉怎么办 奶瓶吸奶费力不顺畅怎么办 宝宝吃奶粉太勤怎么办 香蕉和地瓜一起吃了怎么办 贝亲奶瓶泡沫多怎么办 四个多月的宝宝拉肚子怎么办 宝宝四个月了拉肚子怎么办 四个月宝宝火大怎么办 刚出生的宝宝便秘怎么办