优化这条代码#include <iostream> #include <vector> using namespace std; int longestIncreasingSubsequence(vector<int>& nums) { int n = nums.size(); vector<int> dp(n, 1); int maxLen = 1; for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { if (nums[i] > nums[j]) { dp[i] = max(dp[i], dp[j] + 1); } } maxLen = max(maxLen, dp[i]); } return maxLen; } int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } int result = longestIncreasingSubsequence(nums); cout << result << endl; return 0; }
时间: 2024-04-12 13:33:29 浏览: 16
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int longestIncreasingSubsequence(vector<int>& nums) {
int n = nums.size();
vector<int> dp(n, 1);
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
}
return *max_element(dp.begin(), dp.end());
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
int result = longestIncreasingSubsequence(nums);
cout << result << endl;
return 0;
}
相关问题
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } sort(nums.begin(), nums.end()); // 排序
您的代码漏掉了大括号,请在sort语句后面加上大括号。另外,您需要加上输出结果的语句。完整的代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end()); // 排序
for (int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
return 0;
}
给这个代码加上注释:#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } sort(nums.begin(), nums.end()); // 排序 auto it = unique(nums.begin(), nums.end()); // 去重 nums.resize(distance(nums.begin(), it)); for (int i = 0; i < nums.size(); i++) { cout << nums[i] << " "; } cout << endl; return 0; }
以下是对一个 C++ 代码示例的注释:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n; // 输入数组长度
vector<int> nums(n); // 创建长度为 n 的 vector 容器
for (int i = 0; i < n; i++) {
cin >> nums[i]; // 输入数组元素
}
sort(nums.begin(), nums.end()); // 对数组元素进行排序
auto it = unique(nums.begin(), nums.end()); // 去除数组中的重复元素
nums.resize(distance(nums.begin(), it)); // 重新调整 vector 容器的大小
for (int i = 0; i < nums.size(); i++) {
cout << nums[i] << " "; // 输出去重后的元素
}
cout << endl;
return 0; // 程序正常结束
}
```
注释解释:
- `#include <iostream>`:导入标准输入输出流库,以便在程序中使用输入输出操作。
- `#include <algorithm>`:导入算法库,以便在程序中使用排序和去重等算法操作。
- `#include <vector>`:导入容器库,以便在程序中使用 vector 容器。
- `using namespace std;`:声明使用标准命名空间,以便在程序中不用使用 std 前缀。
- `int main()`:程序入口函数。
- `int n;`:定义变量 n,表示数组长度。
- `cin >> n;`:从标准输入流中读取一个整数,即数组长度。
- `vector<int> nums(n);`:创建一个长度为 n 的 vector 容器,存储整数类型的元素。
- `for (int i = 0; i < n; i++) { cin >> nums[i]; }`:循环读取 n 个整数,也就是数组的元素,存储到 vector 容器中。
- `sort(nums.begin(), nums.end());`:使用 sort() 算法对 vector 容器中的元素进行排序,从小到大排序。
- `auto it = unique(nums.begin(), nums.end());`:使用 unique() 算法去除 vector 容器中的重复元素,返回去重后的区域结尾的迭代器。
- `nums.resize(distance(nums.begin(), it));`:使用 distance() 函数计算 vector 容器中去重后的元素个数,然后使用 resize() 函数将 vector 容器的大小调整为去重后的元素个数。
- `for (int i = 0; i < nums.size(); i++) { cout << nums[i] << " "; }`:循环遍历去重后的 vector 容器元素,输出到标准输出流中。
- `cout << endl;`:输出一个换行符,用于换行。
- `return 0;`:程序正常结束,返回 0。