hdu 5500 Reorder the books 思维

Description

河老师家收藏了卢西奥写的一套书,叫做《混子故事集》,这套书有n本,每本书有一个编号,从1号到n号,河老师非常喜欢这套书,并把这些书按编号从小到大,从上往下摞成一摞。
 
有一天,一个妹子LMG到河老师家玩,河老师因为和别的妹子有约会,就让LMG自己待在他家。LMG对这套书非常好奇,偷偷的看了一下,结果发现这里面竟然有当年CerberuX玩半藏,并与LMG邂逅国王大道的故事。LMG看得出神,十分感动, 结果不小心把一摞书的顺序打乱了。
 
眼看着河老师就要回来了,LMG很着急,她需要尽快把这摞书恢复到原先排好序的状态。
 
可是因为书很重,所以LMG只能做到把一本书从中抽出来,然后再把这这本书放到这摞书的顶上。
 
现在给你打乱的书的顺序,你能帮LMG算算最少需要几次上述的操作,她才能把这套书恢复原来的顺序吗?假如你能算出来的话,LMG答应送你一本她亲笔签名的书 —— 《半藏攻略108式之按H切换英雄》。

Input

多组数据。
第一行包括一行T(T<33) ,表示数据组数。
对于每组数据,第一行为一个正整数n(n<20) 表示这套《混子故事集》中书的数量。
接下来一行n个用空格分开的正整数,表示LMG打乱后这摞书的书号顺序(从上往下)。

Output

对每组数据输出一行一个整数,表示LMG最少需要几次操作才能将书恢复顺序。

Sample Input

1
4
4 1 2 3

Sample Output

3

思路:想明白了其实这题很水啊。。

书原本按照序号从小到大的顺序,要重新排好序,由于只能将下面的取出来放到最上面,次数最少,所以我们可以知道最大的

那个书是不需要动的,次大的数如果在最大的上面也不要动,如果在最大的下面就需要动,以此类推使得次数最小.

处理方法:从后往前遍历,先找到最大号书的位置,则它后面的都需要移动,在依次往前找次大的 ....


#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{  int a[50];
   int n,t;
   scanf("%d",&t);
   while(t--)
   {   scanf("%d",&n);
       for(int i=1;i<=n;i++)
       scanf("%d",&a[i]);
       for(int i=n;i>=1;i--)
       {   if(n==a[i])
             n--;
       }
       printf("%d\n",n);
   }
   return 0;
   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Marcus-Bao

万水千山总是情,只给五角行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值