请用C语言编写以下程序:输入一个小写英文字符串,求其中按字母顺序严格递增最长的序列及其长度
时间: 2024-05-14 16:15:20 浏览: 110
编写一个程序,求字符串的长度
5星 · 资源好评率100%
以下是使用C语言编写的程序,可以输入一个小写英文字符串,求其中按字母顺序严格递增最长的序列及其长度。
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int len, i, j, k, max_len = 0, max_idx = 0;
int dp[100] = {1};
// 输入字符串
printf("请输入小写英文字符串:");
scanf("%s", str);
len = strlen(str);
// 计算dp数组
for (i = 1; i < len; i++) {
dp[i] = 1;
for (j = 0; j < i; j++) {
if (str[i] > str[j] && dp[i] < dp[j] + 1) {
dp[i] = dp[j] + 1;
}
}
}
// 查找最大长度和最大长度位置
for (k = 0; k < len; k++) {
if (dp[k] > max_len) {
max_len = dp[k];
max_idx = k;
}
}
// 输出最长序列
printf("按字母顺序严格递增最长的序列为:");
for (i = max_idx, j = max_len - 1; j >= 0; i--) {
if (dp[i] == j + 1) {
printf("%c", str[i]);
j--;
}
}
printf("\n其长度为:%d\n", max_len);
return 0;
}
```
程序运行示例:
```
请输入小写英文字符串:adgbehicf
按字母顺序严格递增最长的序列为:abc
其长度为:3
```
阅读全文