给出一个1到n的排列,每次可以移动一个数到一个任意位置。问要达到状态1,2,3……n至少移动多少次?
输入格式
n (1<=n<=100000)
n个数
输出格式
移动次数!
样例
【样例输入】
5
2 1 4 5 3
【样例输出】
2
60分TLE了
#include<bits/stdc++.h>
using namespace std;
int n,a[100001],l,f[100001];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
if(a[j]<a[i]&&f[j]+1>f[i]){
f[i]=f[j]+1;
}
}
l=max(l,f[i]);
}
printf("%d",n-l-1);
return 0;
}