UVa120 Stacks of Flapjacks

VSCode 1.85便携版安装与配置:解决远程服务器glibc版本过低报错的保姆级指南 本文详细介绍了如何通过VSCode 1.85便携版解决远程服务器glibc版本过低导致的兼容性问题。通过环境隔离和版本固化的方法,开发者可以在老旧服务器上稳定运行Remote-SSH插件,同时保留主力VSCode的配置。文章提供了从下载安装到深度配置的完整指南,帮助用户快速搭建稳定的开发环境。 阅读详情

Description

Background

Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discrete event simulation. Stacks are also important in the theory of formal languages.

This problem involves both butter and sustenance in the form of pancakes rather than bread in addition to a finicky server who flips pancakes according to a unique, but complete set of rules.

The Problem

Given a stack of pancakes, you are to write a program that indicates how the stack can be sorted so that the largest pancake is on the bottom and the smallest pancake is on the top. The size of a pancake is given by the pancake's diameter. All pancakes in a stack have different diameters.

Sorting a stack is done by a sequence of pancake ``flips''. A flip consists of inserting a spatula between two pancakes in a stack and flipping (reversing) the pancakes on the spatula (reversing the sub-stack). A flip is specified by giving the position of the pancake on the bottom of the sub-stack to be flipped (relative to the whole stack). The pancake on the bottom of the whole stack has position 1 and the pancake on the top of a stack of n pancakes has position n.

A stack is specified by giving the diameter of each pancake in the stack in the order in which the pancakes appear.

For example, consider the three stacks of pancakes below (in which pancake 8 is the top-most pancake of the left stack):

         8           7           2
         4           6           5
         6           4           8
         7           8           4
         5           5           6
         2           2           7
The stack on the left can be transformed to the stack in the middle via  flip(3). The middle stack can be transformed into the right stack via the command  flip(1).

The Input

The input consists of a sequence of stacks of pancakes. Each stack will consist of between 1 and 30 pancakes and each pancake will have an integer diameter between 1 and 100. The input is terminated by end-of-file. Each stack is given as a single line of input with the top pancake on a stack appearing first on a line, the bottom pancake appearing last, and all pancakes separated by a space.

The Output

For each stack of pancakes, the output should echo the original stack on one line, followed by some sequence of flips that results in the stack of pancakes being sorted so that the largest diameter pancake is on the bottom and the smallest on top. For each stack the sequence of flips should be terminated by a 0 (indicating no more flips necessary). Once a stack is sorted, no more flips should be made.

Sample Input

1 2 3 4 5
5 4 3 2 1
5 1 2 3 4

Sample Output

1 2 3 4 5
0
5 4 3 2 1
1 0
5 1 2 3 4
1 2 0

分析样例:

2 4 1 5 3

标记堆底元素,找到3上方且包括3的这些元素中的最大值5。5不在堆顶,将5翻转到堆顶,输出翻转的起始位置,由堆底往上数,输出2:

5 1 4 2 3

将最大值翻转到标记位置,输出1:

3 2 4 1 5

标记上移一位,标记1的位置,找到1上面包括1的元素中的最大值4。4不在堆顶,将4翻转到堆顶,输出3:

4 2 3 1 5

将最大值翻转到标记位置,输出2:

1 3 2 4 5

标记继续上移一位,标记2的位置,找到最大值3,将3翻转到堆顶,输出4:

3 1 2 4 5

将最大值翻转到标记位置,输出3:

2 1 3 4 5

标记上移一位,标记1的位置,找到最大值2,2在堆顶,将2翻转到标记位置,输出4:

1 2 3 4 5

翻转完成,输出0.最后输出结果:

2 1 3 2 4 3 4 0


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <deque>
using namespace std;
const int MAXN = 70;

char str[MAXN];
deque<int> d;
deque<int>::iterator it,maxn;

int main(){
//freopen("test.in","rt",stdin);
    int n;
	while(fgets(str,MAXN,stdin)){ //按行输入,并存如str数组中
        cout <<str;
        //istringstream对象绑定一行字符串,然后以空格为分隔符把该行分隔开来。
        istringstream s(str);
        d.clear();
        //将istringstream对象中的元素转为int型并存入变量n中,入队
        while(s >>n){
            d.push_front(n);
        }
        for(it= d.begin();it != d.end();++it){
            maxn = max_element(it,d.end());     //找到当前位置到堆顶的最大元素
            if(maxn != it){                     //最大元素不是i,进行翻转
                if(maxn != d.end() -1){         //最大元素不在堆顶,则需要翻转到堆顶
                    reverse(maxn,d.end());      //将最大值翻转到堆顶
                    cout <<maxn-d.begin() + 1 <<" ";
                }
                reverse(it,d.end());            //将最大值翻转到需要定位的位置
                cout <<it - d.begin() + 1 <<" ";
            }
        }
        cout <<"0" <<endl;
    }
    return 0;
}


手把手教你接入京东购物小程序:从领券到下单的全流程解析 本文详细解析了如何从API申请到领券下单,手把手教你接入京东购物小程序的全流程。涵盖京东联盟账号注册、商品信息获取、优惠券链接转换等关键技术实践,帮助开发者高效实现电商功能集成,提升用户购物体验。 阅读详情

相关推荐

5G-A无源物联网:深度解析“不插电“智能的底层技术原理

北京移动推出5G-A无源物联网技术,实现电动车标签"零功耗"运行。该技术通过射频能量收集(利用5G-A基站高功率信号转换为电能)和反向散射通信(调制反射信号传输数据)两大核心技术,使设备无需电池即可工作。5G-A相比4G在信号能量密度、通信速率和定位精度等方面显著提升,结合通感一体等创新技术,为无源物联网提供商用基础。该方案已在北京小区试点应用,实现电动车精准定位管理,标签寿命可达5年以上。专家预测,这项技术将大幅降低物联网部署成本,推动"万物智联"时代的到来。

通信行业老兵、物联网从业者,做一个有趣的普通人。 2014

UVa 120 Stacks of Flapjacks

题目要求模拟煎饼叠排序过程,通过翻转操作将煎饼按直径从小到大排列(顶部最小,底部最大)。每次翻转操作将指定位置及以上的煎饼顺序反转。解题采用贪心策略:从最大煎饼开始,依次将其翻转到目标位置。算法时间复杂度为O(n²),适用于最多30个煎饼的情况。输入为一行煎饼直径,输出原始叠和翻转步骤(以0结尾)。代码通过排序和标记位置实现翻转操作,确保每次最多两次翻转即可将一个煎饼归位。

寂静山林 965

Windows下用RKDevTool解包update.img的完整流程(含常见错误排查)

本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。

aa123的博客 716

排序综合-UVA120 煎饼 Stacks of Flapjacks题解(采用STL)

一、算法分析 首先看到这个题,就要想到对子序列进行排序的做法。那么解题思路就比较清晰了,即先找到子序列,再用题上特有的操作(翻面法),将子序列排序。具体做法如下例所示: 2 4 1 5 3 6 5 1 4 2 3 6 3 2 4 1 5 6 4 2 3 1 5 6 1 3 2 4 5 6 3 1 2 4 5 6 2 1 3 4 5 6 1 2 3 4 5 6 分析:①将数组进行排序,本例排序结果为...

numb_ac的博客 274

ADS 使用教程(十八)Encrypting Designs using RFIP Encoder in ADS

在这一节,我们使用RFIP Encoder进行设计加密,这是一种保护知识产权和敏感设计数据的重要方法。RFIP Encoder提供了一种安全的方式来加密设计文件,确保只有授权人员能够访问和使用这些文件。

Dirge19的博客 1169

dify进阶:使用 FastAPI 的 StreamingResponse 实现高效的数据流传输

在 FastAPI 框架中,是一个非常有用的工具,它允许你以流的方式发送数据给客户端,而不是一次性加载所有内容到内存中再发送。这对于处理大型文件下载、视频流或者任何需要长时间处理的任务特别有用。

xiezhipu的博客 1433

Stacks of Flapjacks(翻煎饼) UVA - 120 (贪心 排序)

堆栈和队列通常被认为是数据结构的面包和黄油,可用于体系结构、解析,操作系统和离散事件模拟。堆栈在形式语言理论中也很重要。 现在的问题涉及黄油和煎饼(而不是面包),同时还有一个根据唯一但完整的规则来翻煎饼的服务器。 给你一栈的煎饼,请你编写一个程序用于指示这个栈如何被排序以使得最大的煎饼在最下面而最小的煎饼在最上面。 煎饼的直径将被给出。 栈中的所有煎饼的直径都不一样。 对栈排序是通过一系列"翻...

Suprit's blog 945

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

粒子群算法(PSO)的基本思想是模拟鸟群觅食机制,将鸟类的觅食方向分为自我认知部分和社会部分,个体自主探索群体周围空间的同时,也随着群体的主流方向前进,不断逼近最优目标。本文详解PSO算法基本概念,并给出ROS C++实现加深理解

FRIGIDWINTER的博客 2617

UVa 120 Stacks of Flapjacks 【排序】

题目链接:UVa 120 Stacks of FlapjacksDescription:Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discrete event s

咸鱼の小窝 452

STM32 IIC电量计LTC2944

LTC2944是一款电池电量计,设计用于端电压为3.6V至60V的多节电池。它测量电池充电和放电、电池电压、电流和自身温度。精密模拟库仑计数器通过电池正极端子与负载或充电器之间的检测电阻器对电流进行积分。电池电压、电池电流和硅温度由内部ADC测量。

baidu_34971492的博客 3161

Oracle 11g安装教程(保姆级超详细安装教程)

Oracle详细安装步骤,每一步都配有图例引导 ORACLE是数据库(Oracle服务端)。是连接数据库的客户端(Oracle客户端)。是连接oracle的可视化客户端软件。

2302_81846649的博客 1万+

UVA 120 - Stacks of Flapjacks

输入数字是以回车结束每一行,注意只输入一个数字情况。感觉这道题答案应该不唯一。下面代码是从后往前搜索,如果在相应位置就过去;如果不在就交换到第0位置,然后在做一次交换到相应位置。 #include #include #include int cmp(const void *_a, const void *_b) { int* a = (int *)_a; in

zcube的技术博客 2476

支付宝个人年度账单爬虫实战:从扫码登录到数据解析的全链路解析

作为一名数据爱好者或量化分析师,获取自己的支付宝年度账单不仅是对个人消费行为的深度复盘,更是实现"数据自主权"的第一步。print(f"{row['year']}年: 收入{row['total_income']:.2f} | 支出{row['total_expense']:.2f} | 结余{row['net_savings']:.2f}"){"category": "餐饮", "amount": 12000, "count": 345},"""打开登录页,等待用户扫码,返回Cookie字典"""

2201_76125261的博客 329

UVa OJ 120 - Stacks of Flapjacks

UVa OJ 120 - Stacks of FlapjacksProblem  有一叠煎饼正在锅里。煎饼共有n(n≤30)张,每张都有一个数字,代表它的大小,如 图8-11所示。厨师每次可以选择一个数k,把从锅底开始数第k张上面的煎饼全部翻过来,即 原来在上面的煎饼现在到了下面。   设计一种方法使得所有煎饼按照从小到大排序(最上面的煎饼最小)。输入时,各个煎 饼按照从上到下的顺序给出。 In

Yuuki_Dach's Blog 525

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

UVA - 120 Stacks of Flapjacks

自己对该题的一些细节的分析,作为以后复习资料

Stay 315

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

uva 120 Stacks of Flapjacks

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=56 解题:题目要求的是设计一种这样的方法使得可以完成这样的要求,一开始我看成了最小次数的操作序列,这样一来就只有选择迭代加深搜索了。。。 然而这题只是要求达到最终的效果,因此难度大大降

最爱她! 418

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

uva120 Stacks of Flapjacks

题意:有一摞大小不一的煎饼,我们只能用铲子使之翻转,可以从最下面翻转,也可以选择上面几块翻转,翻转的位置是从底层往上数,例如整摞一起翻就是0。现要求在几次翻过之后饼是从小到大堆起来的,结束时位置打印0。 解法:首先选择出最大的饼,如果它不在最下面,就把它发到最上面,然后整摞反过来,最大的饼就在最下面了。然后忽略最大的饼,又是在整摞饼中选择最大的饼(也就是原来的第二大的饼),重复以上过程,知道所有

u010065754的专栏 585

UVA 120-Stacks of Flapjacks

UVA 120-Stacks of Flapjacks题目大意:给出数列, 一次让第一个数到第i个数全部翻转,把数列从小到大排序解题思路:把前i个的最大数先移动到第一位,然后移动到最后一位#include <stdio.h> #include <iostream> using namespace std; void turn(int *a, int n, int x) { int b[100

ZeroLH00的博客 522

uva 120——Stacks of Flapjacks

题意:一个非常有趣的问题,就是给一摞煎饼,然后从下面拿起来一张,然后把该张上面的所有馅饼反转,求最后使得馅饼从小到大的最小的步数。   思路:贪心。每次都把没排好序的最大数反转到最上面,然后在一次反转到最下面,也就是最多需要2n步就能够把所有的馅饼排好。   Code:   #include #include #include #include #include #inclu

坚持不懈 501

洛谷-UVA120 煎饼 Stacks of Flapjacks

输入格式 输出格式 题意 给你一迭薄煎饼,请你写一个程式来指出要如何安排才能使这些薄煎饼由上到下依薄煎饼的半径由小到大排好。所有的薄煎饼半径均不相同。 要把薄煎饼排好序需要对这些薄煎饼做翻面(flip)的动作。方法是以一抹刀插入一迭薄煎饼中,然后做翻面的动作(也就是说在抹刀上面的薄煎饼经翻面后,会依相反的次序排列)。若一迭共有n个薄煎饼,我们定义最底下的薄煎饼的位置为1,最上面的薄煎饼位置为...

zqhf123的博客 552

uva 120 Stacks of Flapjacks 策略,模拟,思路

给你一叠大小(这里用直径表征)的煎饼,它们的标号是最底层的煎饼为1号,最顶层的那张为n号,即由下向上递增,给出一种操作flip(i),代表将i号煎饼及在其以上的所有煎饼形成的这一小叠颠倒顺序,比如原来是1-3-2-4-5,颠倒后为5-4-2-3-1 现在给你一叠煎饼,要求你施加一组flip操作,最终使得这叠煎饼的大小是从上往下一次递增的。输出这个序列。 其实现在回头想来,它要求你给出一种稳妥的

skyword的专栏 719

UVA 120 Stacks of Flapjacks

题意: 颠倒子序列使整个序列升序排列 做法: 自底至上,每次固定一个元素的位置 若元素不在升序位置上: ①也不在首位 ,先翻转到首位 ②再从升序位置i翻转到相应位置 #include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;c...

weixin_43913867的博客 133

uva 120 Stacks of Flapjacks

#include<iostream> #include<algorithm> #include<queue> #include<cmath> #include<math.h> #include<string> #include<string.h> #include<map> #include<unordered_map> #include<unordered_set> #include&.

qq_35752161的博客 249

Uva120 Stacks of Flapjacks

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int a[31],n; 6 7 void rev(int ct) { 8 printf("%d ", n-ct); 9 for...

angjijian7243的博客 146

【UVa120】Stacks of Flapjacks 模拟

原题:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=56 题意:给定一个序列,每次可以选一个数使数列第一个到这个数颠倒,问如何颠倒使最后数列升序。 先将每个数升序后要呆的位置确定好,然后将这个数翻到最上面再翻到这个位置。 #incl

Mininda 362

8-1 Stacks of Flapjacks UVA120

题意: 有一叠煎饼在锅里 n n<=30张 每张都有一个数字 代表它的大小 厨师每次可以选择一个数k 把从锅底开始数第k张上面的煎饼全部反过来 即原来的在上面的煎饼现在到了下面 如 Sample Input 1 2 3 4 5 5 4 3 2 1 5 1 2 3 4 Sample Output 1 2 3 4 5 0 5 4 3 2 1 1 0 5 1...

weixin_30642267的博客 169
上一篇: acdream 1146 Moist
下一篇: UVa400 Unix ls
ahonn
博客等级 码龄12年 2粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值