刘嘉柚 • 4个月前
hahaha 模板题都做不出来吗
让本蒟蒻来教你吧
#include<cstdio>
#include<iostream>
using namespace std;
int v[10005],f[10005],g[10005]={0,1},maxn,minn; //maxn表示最长上升子序列长度,minn表示最长下降子序列的长度
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int i=1;
while(~scanf("%d",&v[i])) //输入导弹高度
{
f[i]=g[i]=1;
for(int j=1;j<i;j++)
{
if(v[i]<=v[j]) //求最长上升子序列
{
f[i]=max(f[i],f[j]+1);
}
if(v[i]>v[j]) //求最长下降子序列
{
g[i]=max(g[i],g[j]+1);
}
}
if(f[i]>maxn) //求出最长上升子序列的长度
{
maxn=f[i];
}
if(g[i]>minn) //求出最长下降子序列的长度
{
minn=g[i];
}
i++;
}
printf("%d %d\n",maxn,minn);
return 0;
}
评论: