给 n 个信封的长度和宽度。如果信封 a 的长和宽都小于信封 b ,那么信封 a 可以放到信封 b 里,请求出信封最多可以嵌套多少层。 数据范围: , 要求:空间复杂度 ,时间复杂度 要求:空间复杂度 ,时间复杂度
区块链毕设网qklbishe.com为您提供问题的解答
给 n 个信封的长度和宽度。如果信封 a 的长和宽都小于信封 b ,那么信封 a 可以放到信封 b 里,请求出信封最多可以嵌套多少层。
数据范围: ,
要求:空间复杂度 ,时间复杂度
要求:空间复杂度 ,时间复杂度
要求:空间复杂度 ,时间复杂度
#include <bits/stdc++.h> using namespace std; struct node { int a; //长 int b; //宽 }arr[2005]; int n; int dp[2005]; //按照a从小到大排序,若a相等按照b从小到大排序 bool cmp(node x, node y) { if(x.a == y.a) { return x.b < y.b; } return x.a < y.a; } int main() { cin >> n; for(int i = 1; i <= n; i++) { cin >> arr[i].a; cin >> arr[i].b; } sort(arr+1, arr+1+n, cmp); //将信封从小到大排序 // for(int i = 1; i <= n; i++) // { // cout << arr[i].a << " " << arr[i].b << endl; // } // 求最长上升子序列 int ans = 0; for(int i = 1; i <= n; i++) { dp[i] = 1; for(int j = 1; j < i; j++) { if(arr[j].a < arr[i].a && arr[j].b < arr[i].b) { dp[i] = max(dp[i], dp[j]+1); } } ans = max(ans, dp[i]); } cout << ans << endl; return 0; }
22:59
以上就是关于问题给 n 个信封的长度和宽度。如果信封 a 的长和宽都小于信封 b ,那么信封 a 可以放到信封 b 里,请求出信封最多可以嵌套多少层。
数据范围: , 要求:空间复杂度 ,时间复杂度
要求:空间复杂度 ,时间复杂度 的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训