#include <stdio.h>
#define MAX_N 10000
int dp[MAX_N]={0};
int i=0;
int dao[MAX_N];
int max(int a,int b)
{
return a>b?a:b;
}
void solve1()
{
int k,j;
int res = 0;
int n = i;
for(j=0; j<n; j++)
{
dp[j] = 1;
for(k=0; k<j; k++)
if(dao[k] > dao[j])
dp[j] = max(dp[j],dp[k]+1);
res = max(res , dp[j]);
}
printf("%d\n",res);
}
void solve2()
{
int k,j;
int res = 0;
int n = i;
for(j=0; j<n; j++)
{
dp[j] = 1;
for(k=0; k<j; k++)
if(dao[k] < dao[j])
dp[j] = max(dp[j],dp[k]+1);
res = max(res , dp[j]);
}
printf("%d\n",res);
}
int main()
{
char q;
int s=0;
while(q=getchar())
{
if(q>='0' && q<='9')
s = s*10+q-'0';
else if(q == ' ')
{
dao[i] = s;
i++;
s = 0;
}
else
break;
}
dao[i] = s;
i++;
solve1();
solve2();
return 0;
}
一道蓝桥杯的算法
猜你喜欢
转载自blog.csdn.net/delete_bug/article/details/103040884
今日推荐
周排行