#1523 : 陣列重排2
阿新 • • 發佈:2019-02-12
描述
給定一個1-N的排列A1, A2, ... AN,每次操作小Hi可以選擇一個數,把它放到陣列的最左邊。
請計算小Hi最少進行幾次操作就能使得新陣列是遞增排列的。
輸入
第一行包含一個整數N。
第二行包含N個兩兩不同整數A1, A2, ... AN。(1 <= Ai <= N)
對於60%的資料 1 <= N <= 20
對於100%的資料 1 <= N <= 100000
輸出
一個整數代表答案
樣例輸入5 2 3 1 4 5樣例輸出
1
找到很簡單的方法,還是需要想一下。
程式碼:
#include <bits/stdc++.h> using namespace std; const int maxn=110000; int a[maxn]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } int sum=0; int m=n; for(int i=n;i>=1;i--) { if(a[i]==m) { m--; sum++; } //printf("%d ",dp[i]); } //cout<<endl; printf("%d\n",n-sum); return 0; }