题意
给定 n n n 和长度为 n n n 的数组,操作第一个数,插入到任意位置,至少几次能使这个序列有序。
分析
每一次操作时,我们要确定最后一次的操作位置,这样才不会导致当 a = { 1 , 3 , 2 , 4 , 5 } a=\{1,3,2,4,5\} a={1,3,2,4,5} 时,不移动的情况了。
所以我们要找到最后一次的操作位置,就是 a i > a i + 1 a_i>a_{i+1} ai>ai+1,在循环过程中记录下来就可以了。
Code
#include <cstdio>
using namespace std;
int n, res, a[100007];
int main() {
scanf ("%d", &n);
for (int i = 1; i <= n; i++)
scanf ("%d", &a[i]);
for(int i = 1; i < n; i++) {
// 确定每一次最后一个 a[i] > a[i + 1]
if (a[i] > a[i + 1])
// 确定 res
res = i;
}
printf ("%d", res);
return 0;
}
完结撒花。