CSU-1044

来源:互联网 发布:淘宝模特怎么拍衣服 编辑:程序博客网 时间:2024/06/15 23:24

这道题有点tricky,如果按照模拟的思路去做可能挺难。


我们假设下面i个数字是有序的,然后上面n-i个数字中,部分数字呈现了降序。

譬如,

6

2

3

5

1

那么1到5是有序部分,上面的3和2出现在了他不应该出现的位置。因为我们只能移动最上方的牌,所以为了移动3,我们必须先移动2和6。因为3下面已经有序了,上面如果都能移动一次,那么结果肯定是有序的。而最小的移动次数就是为了能够移动最下方的无序牌(此处为3)而移动的次数(包括移动3)。

#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>using namespace std;int a[15];int main(){    int n;    while(~scanf("%d",&n)){    char temp[3];        for(int i=0;i<n;i++)scanf("%d",&a[i]);int flag=a[0];int i;        for(i=1;i<n;i++){            if(a[i]>flag)flag=a[i];            else break;        }        cout<<n-i<<endl;    }return 0;}


0 0
原创粉丝点击