hihocoder 1523 数组重排2+思维

参考:http://blog.csdn.net/howardemily/article/details/74991367

题意:每次可以移动数组中的一个数到数组的最左边,问最少操作数,使得数列升序;

思路:因为每次移动到最左边,所以从右边开始(这样移动后不会影响之前的判断),如果这个数是结果位子的数,就不用移动,就在ans中-1;

#include <iostream>
using namespace std;

const int maxn = 100009;
int a[maxn];

int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    int ans  = n;
    for(int i=n; i>=1; --i)
    {
        if(a[i]==n)
        {
            n--;
            ans--;
        }
    }
    cout<<ans<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/ckxkexing/p/8526478.html