写出全部代码,并用简单的c语言表示
时间: 2024-12-17 16:33:22 浏览: 20
当然,这是一个简单的C语言函数来计算给定整数数组中最长连续递减子序列的长度:
```c
#include <stdio.h>
int findLongestDecSubseq(int arr[], int n) {
if (n == 0) return 0; // 空数组的情况
if (n == 1) return 1; // 只有一个元素的情况
int dp[n]; // 存储以每个元素结束的最长递减子序列长度
dp[0] = 1;
for (int i = 1; i < n; i++) {
if (arr[i] <= arr[i - 1]) { // 如果当前元素小于等于前一个
dp[i] = dp[i - 1] + 1; // 扩展递减子序列
} else {
dp[i] = 1; // 如果不是递减,重置为1
}
}
int maxLength = 1; // 初始化最长子序列长度为1
for (int i = 1; i < n; i++) {
maxLength = MAX(maxLength, dp[i]); // 比较并更新最长子序列长度
}
return maxLength;
}
// 使用宏MAX获取较大值,避免频繁的if-else判断
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int main() {
int arr[] = {1, 5, 2, 2, 4};
int n = sizeof(arr) / sizeof(arr[0]);
printf("最长连续递减子序列的长度为: %d\n", findLongestDecSubseq(arr, n));
return 0;
}
```
在这个代码中,`findLongestDecSubseq`函数负责核心逻辑,通过动态规划的方式找出最长连续递减子序列。`main`函数则是一个测试用例,将数组传递给`findLongestDecSubseq`并打印结果。
阅读全文