我是靠谱客的博主 勤恳柠檬,最近开发中收集的这篇文章主要介绍动态规划——Russian Doll Envelopes,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这个题大意很好理解,通过例子就能明白,很像俄罗斯套娃,大的娃娃套小的娃娃。这个题是大信封套小信封,每个信封都有长和宽,如果A信封的长和宽都要比B信封的要大,那么A信封可以套B信封,现在给定一组信封的大小,要求输出最多有几个信封能套在一起。
Example:
Given envelopes = [[5,4],[6,4],[6,7],[2,3]], the maximum number of envelopes you can Russian doll is 3 ([2,3] => [5,4] => [6,7]).
这个题细想其实很简单,首先要排序,按长从小到大排列,如果长一样,视宽小的为小排在前面。这样一来最优子结构和状态转移就都有了。
状态:dp[i]表示包含了第i的信封的ans,状态转移方程:如果第i个信封能套下它前面的第j个信封,则dp[i] = max{dp[j]+1},0<=j<i,否则dp[i] = 1只包含自身。
这个题的关键其实是前面排序那部分,我随便写了个冒泡O(n^2)的排序,还算运气好直接ac了。
 
 1 public int maxEnvelopes(int[][]envelopes) {
 2         int esize = envelopes.length;
 3         if(esize==0)return 0;
 4         if(esize==1)return 1;
 5         int ans = 1;
 6         int t1 = 0,t2 = 0;
 7         for(int i = esize-1;i>0;i--) {
 8             for(int j = 0;j<i;j++) {
 9                 if(envelopes[j][0]>envelopes[j+1][0]) {
10                     t1 = envelopes[j][0];
11                     envelopes[j][0] = envelopes[j+1][0];
12                     envelopes[j+1][0] = t1;
13                     t2 = envelopes[j][1];
14                     envelopes[j][1] = envelopes[j+1][1];
15                     envelopes[j+1][1] = t2;
16                 }else if((envelopes[j][0]==envelopes[j+1][0])&&(envelopes[j][1]>envelopes[j+1][1])) {
17                     t2 = envelopes[j][1];
18                     envelopes[j][1] = envelopes[j+1][1];
19                     envelopes[j+1][1] = t2;
20                 }
21             }
22         }
23         int[]dp = new int[esize];
24         Arrays.fill(dp,1);
25         for(int i = 1;i<esize;i++) {
26             for(int j = 0;j<i;j++)
27                 if(envelopes[j][0]<envelopes[i][0] && envelopes[j][1]<envelopes[i][1])dp[i] = Math.max(dp[i],dp[j]+1);
28             ans = Math.max(ans, dp[i]);
29         }
30         return ans;
31     }

 

 

转载于:https://www.cnblogs.com/messi2017/p/9943452.html

最后

以上就是勤恳柠檬为你收集整理的动态规划——Russian Doll Envelopes的全部内容,希望文章能够帮你解决动态规划——Russian Doll Envelopes所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部