【滴滴出行2017春招研发工程师笔试题】俄罗斯套娃
来源:互联网 发布:平面设计app软件 编辑:程序博客网 时间:2024/04/29 21:07
俄罗斯套娃
题目描述:
每一个套娃都有一个尺寸规格,宽和高用一对整型来表示(w,h),当套娃A的宽和高都小于套娃B的时候,套娃A就可以嵌套进套娃B内,在多个套娃的尺寸数据中找出可以依次嵌套最多的个数。
输入描述:
输入的第一行为整数n(1≤n≤50)表示套娃的个数。然后给出n个套娃的尺寸数据,每行两个整数,表示该个套娃的宽和高。
输入例子:
4
5 4
6 4
6 7
2 3
输出例子:
3
俄罗斯套娃信封问题的本质是一个二维版的 LIS(最长递增子序列)的问题。此题可以用动态规划求解,时间复杂度为O(
首先把套娃按宽度升序排序,再对高度进行最长递增子序列的求解。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;}
2 0
- 【滴滴出行2017春招研发工程师笔试题】俄罗斯套娃
- 滴滴出行2017春招研发工程师笔试题-套娃
- 滴滴出行2017春招研发工程师笔试题-翻转单词顺序
- 滴滴出行2017秋招笔试题
- 2016滴滴出行研发工程师笔试题(亮灯问题)
- 滴滴出行2017秋招算法笔试题(作弊概率)
- 滴滴出行2017秋招算法笔试题(作弊概率)
- 给出01数组计算出符合岛屿规则的个数 [牛客网-滴滴出行2017春招算法工程师笔试题B卷 ]
- 滴滴出行2017秋招编程题
- 滴滴出行2017秋招笔试--餐馆消费问题
- 滴滴2017校招算法工程师笔试题--吃饭问题
- 2017滴滴出行校园招聘笔试题
- 滴滴出行2017秋招笔试真题-编程题汇总
- 【牛客网】滴滴出行2017秋招测试岗笔试真题汇总
- 百度校招研发工程师笔试题
- 滴滴出行2016校招编程题
- 滴滴出行秋招笔试(0的个数)
- 校园招聘-2017滴滴研发工程师内推笔试编程题
- 排序算法(一):插入排序与堆排序
- LinearLayoutCompat源码简单分析
- linux下ftp的配置及使用
- java面试题-设计模式
- 状态机思维
- 【滴滴出行2017春招研发工程师笔试题】俄罗斯套娃
- OGRE学习系列四:基础教程2 灯光,相机和阴影
- 作业1:诗歌欣赏
- 触发器 对商品订单管理 简单分析
- jsp页面input标签中时间日期回显的格式问题&在input标签中指定时间的格式
- A. Oleg and shares
- js实现简单验证码功能!
- B. Igor and his way to work
- 格雷码的递归生成