254: 翻煎饼

本文介绍了一道算法题,旨在通过煎饼翻转的方式,将煎饼按照从小到大的顺序排列,以求得翻转次数的最小值。题目中,煎饼的翻转操作是通过铲子插入并翻转来实现的。解决方案涉及到找到最大煎饼的位置,并判断其是否在正确的位置,如果不正确则进行翻转操作。
摘要由CSDN通过智能技术生成

题目描述

麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟。最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在那里,师傅只需要用铲子翻几下,就让煎饼整齐的叠在了一起。
这天,为了庆祝麦兜被保送上研究生,他从煎饼师傅那里买回来一些煎饼请客。但是麦兜买回的煎饼大小不一,麦兜太想吃煎饼了,他想吃这些煎饼中最大的那个。麦兜还知道同学们也很喜欢煎饼,为了表示他的诚意,他想让同学们先吃,麦兜最后吃,因此,麦兜想把煎饼按照从小到大的顺序叠放在一起,大的在最下面。这样麦兜就可以在最后拿到最大的那一块煎饼了。
现在请你帮助麦兜用煎饼师傅翻煎饼的方法把麦兜买的煎饼从小到大的叠在一起。煎饼师傅的方法是用铲子插入两块煎饼之间,然后将铲子上的煎饼翻一转,这样铲子上第一个煎饼就被翻到了顶上,而原来顶上的煎饼则被翻到了刚才插入铲子的地方。麦兜希望这样翻煎饼的次数最少。

输入

输入包括两行,第一行是一个整数n(1<=n<=1000),表示煎饼的个数,接下来的一行有n个不相同的整数,整数间用空格隔开,每个整数表示煎饼的大小(直径),左边表示顶部,右边表示底部。

输出

输出为一行,翻煎饼的最少次数

样例输入

5
5 4 2 3 1

样例输出

4

思路

主要是要理解题意,本质是一个排序问题,每次翻转,铲子上的所有饼子全部逆序掉下来,达到原来顶上的煎饼掉到铲子的地方,而原来铲上第一个饼子到达顶部的效果。

  1. 先找到最大饼子的位置
  2. 判断余下最大煎饼是否在已排好最大煎饼的上一个位置
  3. 如果不是,则先把它翻到顶部,然后再翻到下面
  4. 如果是则无需再翻

代码

#include<iostream>
#include<algorithm>

using 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值