【滴滴出行2017春招研发工程师笔试题】俄罗斯套娃
2017-04-24 02:13
351 查看
俄罗斯套娃
题目描述:每一个套娃都有一个尺寸规格,宽和高用一对整型来表示(w,h),当套娃A的宽和高都小于套娃B的时候,套娃A就可以嵌套进套娃B内,在多个套娃的尺寸数据中找出可以依次嵌套最多的个数。
输入描述:
输入的第一行为整数n(1≤n≤50)表示套娃的个数。然后给出n个套娃的尺寸数据,每行两个整数,表示该个套娃的宽和高。
输入例子:
4
5 4
6 4
6 7
2 3
输出例子:
3
俄罗斯套娃信封问题的本质是一个二维版的 LIS(最长递增子序列)的问题。此题可以用动态规划求解,时间复杂度为O(n2)。
首先把套娃按宽度升序排序,再对高度进行最长递增子序列的求解。dp[i]表示的是前i+1个套娃的最大嵌套个数。
C++:
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main(){ int n, w, h; vector<pair<int, int>> v; cin >> n; for (int i = 0; i < n; i++) { cin >> w >> h; v.push_back(make_pair(w,h)); } sort(v.begin(), v.end()); vector<int> dp(v.size(), 1); for (int i = 1; i < dp.size(); i++) { for (int j = 0; j < i; j++) { if (v[i].first > v[j].first&&v[i].second>v[j].second) dp[i] = max(dp[i], dp[j] + 1); } dp[i] = max(dp[i], dp[i - 1]); } cout << dp.back() << endl; return 0; }
9159
相关文章推荐
- 滴滴出行2017春招研发工程师笔试题-套娃
- 滴滴出行2017春招研发工程师笔试题-翻转单词顺序
- 给出01数组计算出符合岛屿规则的个数 [牛客网-滴滴出行2017春招算法工程师笔试题B卷 ]
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(图像处理)
- 2017阿里研发工程师C/C++实习生招聘笔试题
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(一起消消毒)
- xor - 滴滴出行2018校园招聘网申笔试-研发工程师
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(神奇的数)
- 搜狐2017秋招研发工程师笔试 —— 袋鼠过河(贪心、动态规划、转为图)
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场 C
- 搜狐2017秋招研发工程师笔试题目
- 2017阿里C++研发工程师-校招-笔试模拟
- 寻找丑数 - 滴滴出行2018校园招聘网申笔试-研发工程师
- 整数无序数组求第K大数(暴力|快排) - 滴滴出行2018校园招聘内推笔试-研发工程师
- 给定整数序列求连续子串最大和 - 滴滴出行2018校园招聘内推笔试-研发工程师
- 2016滴滴出行研发工程师笔试题(亮灯问题)
- 网易2017校招C++开发工程师(北京)笔试
- 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码
- 百度2012研发工程师笔试
- #每日一题#网易2016实习研发工程师笔试题