貌似是最好理解的解
2025-11-20 22:40:35
发布于:浙江
1阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int a[1145], dp1[1145],dp2[1145];
int main(){
int n,ans=0;
cin >> n;
for (int i=1; i<=n; i++) {
cin >> a[i];
}
//第一遍动规
for(int i=1;i<=n;i++){
dp1[i] = 1;
for (int j=1; j<i; j++) {
if (a[j] < a[i]) {
dp1[i] = max(dp1[i], dp1[j]+1);//从左至右
}
}
}
//第二遍动规
for(int i=n;i>=1;i--){
dp2[i] = 1;
for (int j=n; j>i; j--) {
if (a[j] < a[i]) {
dp2[i] = max(dp2[i], dp2[j]+1);//从右至左
}
}
ans=max(dp1[i]+dp2[i]-1,ans);
}
cout << n-ans;
return 0;
}
这里空空如也




有帮助,赞一个