这题关于动态规划,还是比较经典的
本质是求最长上升子串
#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;
}

京公网安备 11010502036488号