参考: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; }