分析:
发现自己连拦截导弹都不能5min切掉了
看来原来学的忘得差不多了
第一问就是最长不上升序列
第二问是最长上升子序列
tip
注意n=1的情况
这里写代码片
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char s[1010];
int g[30],a[30],f[30],tot=0,tt=0;
void doit()
{
int i,j,ans1=0,mx1,mx2,k;
for (i=1;i<=tot;i++)
{
mx1=0;
mx2=0;
for (j=1;j<i;j++)
if (a[j]>=a[i])
mx1=max(mx1,f[j]);
else mx2=max(mx2,g[j]);
f[i]=mx1+1;
g[i]=mx2+1;
ans1=max(ans1,f[i]);
tt=max(tt,g[i]);
}
printf("%d,%d",ans1,tt-1);
}
int main()
{
scanf("%s",&s);
int num=0;
for (int i=0;i<strlen(s);i++)
{
if (s[i]>='0'&&s[i]<='9') num=num*10+s[i]-'0';
else a[++tot]=num,num=0;
}
a[++tot]=num;
doit();
return 0;
}