10 3 18 7 14 10 12 23 41 16 24样例输出
6
#include <stdio.h> int a[1005], dp[1005]; int main() { int i, j, l, max; int n; scanf("%d",&n); for(i = 1; i <= n; i++){ scanf("%d",&a[i]); dp[i] = 1; } for(i = 1; i <= n; i++){ l = 1; for(j = 1; j < i; j++){ if(a[j] <= a[i]){ if(dp[i] + dp[j] > l) l = dp[i] + dp[j]; } } dp[i] = l; if(i == 1) max = l; else if(l > max) max = l; } printf("%d\n",max); return 0; }
学会的第一个动态规划题目。。