最小排序量
题目描述
给定数组An ,每次操作任选A[i]从序列中删除、然后插入到任意其他位置,求将数组A从小到大排序所需最少操作数量。
输入格式
第一行一个整数n,表示数组A中的数的个数
第二行为n个整数,中间用一个空格隔开
输出格式
一行,一个整数,表示将数组A从小到大排序所需最少操作数量。
样例 #1
样例输入 #1
5
2 3 4 1 4
样例输出 #1
1
求调
我的代码:
#include <bits/stdc++.h>
using namespace std;
int a[100100];
int dp[100100];
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++) {
dp[i] = 1;
for (int j = 1; j < i; j++) {
if (a[i] >= a[j])
dp[i] = max(dp[j] + 1, dp[i]);
}
}
cout << n - dp[n];
return 0;
}
这题是道DP题,是最小不下降子序列问题,,哪位大佬能帮我看看我哪写错了。