真该让你们见识见识机器写的代码(这里应该有看得懂的同志吧?)
比我写的代码还清晰……
- #include<stdio.h>
- #define MAXSIZE 10
-
- int main()
- {
- int arr[MAXSIZE];
- int i, j, maxLen, len;
- int maxIndex[MAXSIZE];
- int temp[MAXSIZE];
-
- printf("Please input the array:");
- for (i = 0; i < MAXSIZE; i++)
- {
- scanf("%d", &arr[i]);
- }
-
- //初始化
- maxLen = 0;
- for (i = 0; i < MAXSIZE; i++)
- {
- maxIndex[i] = 0;
- temp[i] = 1;
- }
-
- //计算最长上升子序列
- for (i = 0; i < MAXSIZE; i++)
- {
- len = 1;
- for (j = 0; j < i; j++)
- {
- if (arr[i] > arr[j] && len < temp[j] + 1)
- {
- len = temp[j] + 1;
- }
- }
- temp[i] = len;
- if (len > maxLen)
- {
- maxLen = len;
- maxIndex[maxLen - 1] = i;
- }
- }
-
- //输出最长上升子序列
- printf("The longest increasing subsequence is:");
- for (i = maxLen - 1; i >= 0; i--)
- {
- printf("%d ", arr[maxIndex[i]]);
- }
- printf("\n");
-
- return 0;
- }
复制代码
|