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; }
skr