终于看到这道题了,激动啊~ 解法一: 实用动态规划的方法,存储之前的运算值,从小到大,依次获得从当前数值算起的最长序列长度。 动规水很深啊! 代码: #include <stdio.h> #include <stdlib.h> int a[] = {1,-1,2,-3,4,-5,6,-7}; //typedef size 8; int size = 8; void getLongest() { int i, j; int max[8] = {1,1,1,1,1,1,1,1}; for(i = 0; i < size; i ++) { for(j = i-1; j > 0; j --) { if((a[i] > a[j])&&(max[j] + 1 > max[i])) { max[i] = max[j] + 1; } } printf("max[%d] is %d/n",i, max[i]); } } int main() { getLongest(); system("pause"); } 解法二:待续