这题关于动态规划,还是比较经典的
本质是求最长上升子串
#include<stdio.h> #include<string.h> int main(void) { int num; scanf("%d",&num); int a[200]={0}; int step[200]={0}; for(int i=0;i<num;i++) { scanf("%d",&a[i]); } for(int i=0;i<num;i++) { step[i]=1; } for(int i=1;i<num;i++) { int max=0; for(int j=0;j<i;j++) { if(a[i]>a[j]) { max=(step[j]>max)?step[j]:max; } } step[i]=max+1; } int maxcnt=0; for(int i=0;i<num;i++) { maxcnt=(step[i]>maxcnt)?step[i]:maxcnt; } printf("%d",maxcnt); return 0; }