#include <iostream> #include <vector> using namespace std; int search(const vector<int>& xulie) { int maxL = 1; for (int i = 0; i < xulie.size(); ++i) { int count = 1; for (int j = i + 1; j < xulie.size(); ++j) { if (xulie[j] > xulie[j - 1]) { ++count; } else break; } if (count > maxL) { maxL = count; } } return maxL; } int main() { int n; cin >> n; vector<int> xulie(n); for (int i = 0; i < n; ++i) { cin >> xulie[i]; } int result = 0; for (int i = 0; i < n; ++i) { vector<int> temp = xulie; temp.erase(temp.begin() + i); int length = search(temp); if (length > result) { result = length; } } cout << result << endl; return 0; }怎么修改这个代码, 满足限制时间为1s
时间: 2024-02-02 22:02:42 浏览: 85
#include <iostream> #include<iomanip> using namespace std;九九乘法表
以下是使用动态规划进行优化后的代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; ++i) {
cin >> nums[i];
}
vector<int> dp(n, 1); // dp[i]表示以nums[i]为结尾的最长上升子序列长度
for (int i = 1; i < n; ++i) {
for (int j = 0; j < i; ++j) {
if (nums[j] < nums[i]) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
}
int result = *max_element(dp.begin(), dp.end()); // 取dp数组中的最大值
cout << result << endl;
return 0;
}
```
通过使用动态规划,时间复杂度降为O(n^2),可以满足1秒的时间限制。
阅读全文