可以看一下我的代码:
```cpp
#include <bits/stdc++.h>
using namespace std;
int a[200],b[200],c[200];
main() {
int n,i,j,maxx;
cin>>n;
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(i=1; i<=n; i++)
cin>>a[i];
for(i=1; i<=n; i++) {
b[i]=1;
for(j=1; j<=i-1; j++) {
if(a[i]>a[j] && b[j]+1>b[i])
b[i]=b[j]+1;
}
}
for(i=n; i>=1; i--) {
c[i]=1;
for(j=i+1; j<=n; j++) {
if(a[j]<a[i] && c[j]+1>c[i])
c[i]=c[j]+1;
}
}
maxx=0;
for(i=1; i<=n; i++) {
if(b[i]+c[i]>maxx)
maxx=b[i]+c[i];
}
cout<<n-maxx+1;
return 0;
}
```
by Eason_AC @ 2019-03-23 21:10:00
已AC,但是谁能帮我讲出我两次代码为什么不能等同呢?
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[101],b[101],c[101],d[101],i,j,n,s=2147483647;
int main()
{
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&a[i]),b[i]=1;
for (i=2;i<=n;i++)
for (j=1;j<i;j++)
if ((b[j]+1>=b[i])&&(a[i]>a[j]))
b[i]=b[j]+1;
for (i=1;i<=n;i++) c[i]=1;
for (i=n;i>=1;i--)
for (j=i+1;j<=n;j++)
if ((c[j]+1>=c[i])&&(a[i]>a[j]))
c[i]=c[j]+1;
for (i=1;i<=n;i++)
{
d[i]=n-(b[i]+c[i]-1);
s=min(s,d[i]);
}
printf("%d\n",s);
return 0;
}
```
by 洛谷是大佬 @ 2019-03-23 21:11:06
撞头像了
by DYKdyk @ 2019-07-15 21:14:50