题目链接
分析:
发现自己连拦截导弹都不能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;
}