@[浅夏琉璃](/space/show?uid=176960)
```
for(int i=1;i<=m;++i)
{
for(int j=1;j<i;++j)
if(c[i]>c[j])
d[i]=max(d[i],d[j]+1);
if(b[i]>sum)
sum=b[i];//这里不是d[i]嘛
}
```
by Vivian_IMproved @ 2019-02-16 19:12:21
而且我觉得您应该强制选一个才对吧
by Vivian_IMproved @ 2019-02-16 19:14:06
@[Vivian_IMproved](/space/show?uid=144006) dalao。现在是40,就按您的方式。。
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[110],b[110],c[110],d[110];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
b[i]=d[i]=1;
for(int i=1;i<=n;++i)
{
cin>>a[i];
c[n-i+1]=a[i];
}
int o=0,p=0;
for(int k=1;k<=n;++k)
{
int num=0,sum=0;
for(int i=1;i<=k;++i)
{
for(int j=1;j<i;++j)
if(a[i]>a[j])
b[i]=max(b[i],b[j]+1);
if(b[i]>num)
num=b[i];
}
int m=n-k+1;
for(int i=1;i<=m;++i)
{
for(int j=1;j<i;++j)
if(c[i]>c[j])
d[i]=max(d[i],d[j]+1);
if(b[i]>sum)
sum=d[i];
}
if(o+p<sum+num)
{
o=num;
p=sum;
}
}
cout<<n-o-p+1<<endl;
return 0;
}
```
by 浅夏琉璃 @ 2019-02-16 19:22:27
@[浅夏琉璃](/space/show?uid=176960) 其实我觉得您应该强制选当前节点,否则没办法保证两边拼起来的时候满足条件啊
by Vivian_IMproved @ 2019-02-16 19:23:58