Acwing1696. 困牛排序
题意
给定一个n个数的排列,每次操作将第一个数插入到任意数之后,求多少次操作后排列为升序
若\(a_i>a_{i+1}\) 那么至少操作i次才能将\(a_i\)插入到\(a_{i+1}\)之后
这时我们思考是否可以通过i次操作,使得序列有序,假如此时\(a_{i+1~n}\) 有序
于是我们可以通过插入排序,使得序列有序
如何保证\(a_{i+1~n}\) 有序,只需要找到第一个\(a_i>a_{i+1}\)即可
CODE
#include<bits/stdc++.h>
using namespace std;
int n;
int m[120];
int main(){
cin>>n;
for(int i=1;i<=n;++i) cin>>m[i];
for(int i=n-1;i>=1;--i){
if(m[i]>m[i+1]){
cout<<i<<endl;
return 0;
}
}
cout<<0<<endl;
return 0;
}
思维题需要注重思考,而不是一味靠算法

浙公网安备 33010602011771号