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;
}
View Code

 

posted @ 2018-03-08 09:06  ckxkexing  阅读(120)  评论(0编辑  收藏  举报