6-9 最大的连续递增数字构成的整数 C语言
时间: 2024-10-25 20:14:41 浏览: 51
在C语言中,如果我们要找出数组`arr[]`中最长的连续递增子序列的最大数字,可以使用动态规划的方法。这里我们假设输入是一个正整数数组,例如:
```c
#include <stdio.h>
int longest_increasing_subsequence(int arr[], int n) {
// 初始化长度为1的子序列
int dp[n];
for (int i = 0; i < n; i++) {
dp[i] = 1;
}
// 遍历数组,更新最长递增子序列
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (arr[j] < arr[i]) {
dp[i] = ((dp[i]) > (dp[j] + 1)) ? dp[i] : (dp[j] + 1);
}
}
}
// 找到最大值并返回
int max_len = 0;
for (int i = 0; i < n; i++) {
if (max_len < dp[i]) {
max_len = dp[i];
}
}
return max_len;
}
// 测试函数
int main() {
int arr[] = {5, 4, 2, 8, 7, 3};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Longest increasing subsequence is: %d\n", longest_increasing_subsequence(arr, n));
return 0;
}
```
这个程序首先初始化一个一维数组`dp`,其中`dp[i]`表示以`arr[i]`结尾的最长递增子序列的长度。然后遍历数组,对于每个元素,如果它比前一个大,就更新其对应的`dp`值。最后,找到整个数组中`dp`数组中的最大值,即为所求。
注意,这个算法寻找的是最长递增子序列的长度,而不是包含的最大数字。如果要找包含的最大数字,可以直接遍历数组,每次都记住当前最大的数字即可。
阅读全文
相关推荐


















