题目描述
一叠数值不同的扑克牌(不超过13张),每次只能拿最顶端的一张插入到任意位置。至少操作多少次,扑克牌能够从上到下是从大到小的顺序。
输入
多组数据,每组第一行为n,扑克牌个数。第二行n个空格隔开的正整数,(这些数是1~13),为这叠扑克牌从下到上的数值。
输出
每组数据输出一行,至少按规则操作的次数。
样例输入
3 1 3 2
5 1 3 5 2 6
样例输出
1
2
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<cmath>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int data[n];
memset(data,0,sizeof(data));
for(int i=0; i<n; i++)
{
cin>>data[i];
}
int num=1;
for(int i=1; i<n; i++)
{
if(data[i]>=data[i-1])
{
num++;
}else{
break;
}
}
cout<<n-num<<endl;
}
return 0;
}
题目的思路是:找到最长的那个连续递增的数列的长度,然后用数组的总长度去减去递增数列的长度就是答案