UVaOJ 120 - Stacks of Flapjacks
来源:互联网 发布:陈家洛喜欢谁 知乎 编辑:程序博客网 时间:2024/05/16 08:32
AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 1. Elementary Problem Solving ::Sorting/Searching
Description
对于一个栈, 有一种操作方法 Flip(x)。
该方法可以将栈顶的 x 个元素反转。
给出一个栈序列(从上到下), 要求通过操作使其越接近栈顶的元素越小。
输出按操作的先后顺序, 输出操作数 x 。
Type
Sorting/Searching
Analysis
直接以输入序列的方式来看这题。
则题目要求通过 Flip(x) 操作, 使得输入序列变为升序。
因为 Flip(x) 不会影响 x 位之后的元素,
所以从最后一位开始, 每次找到要调换到该位置的极大值,
利用 Flip(pos) (pos为该极大值所在的位置), 将其调到最前。
然后利用 Flip(x) 将其调到对应的位置。
之后再去操作前一位, 直到全部操作完为止即可。
Solution
// UVaOJ 120// Stacks of Flapjacks// by A Code Rabbit#include <algorithm>#include <cstdio>using namespace std;const int MAXN = 32;int stack[MAXN];int top;char ch;void Tranform(int idx);void Flip(int num);int main() { while (scanf("%d%c", &stack[0], &ch) != EOF) { top = 1; while (ch != '\n') scanf("%d%c", &stack[top++], &ch); for (int i = 0; i < top; i++) printf("%d%c", stack[i], i < top - 1 ? ' ' : '\n'); Tranform(1); puts("0"); } return 0;}void Tranform(int x) { if (x > top) return; int idx = max_element(stack, stack + top - x + 1) - stack; int pos = top - idx; if (pos != x) { if (pos != top) { printf("%d ", pos); Flip(pos); } else { printf("%d ", x); Flip(x); } Tranform(x); } else { Tranform(x + 1); }}void Flip(int x) { int num = top - x; for (int i = 0; i < (num + 1) / 2; i++) swap(stack[i], stack[num - i]);}
- UVaOJ 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- 120 - Stacks of Flapjacks
- UVA 120 Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- uva 120 Stacks of Flapjacks
- UVA 120 - Stacks of Flapjacks
- uva 120 - Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- UVA 120 - Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- UILabel的详细使用
- 进军微型服务器 Atom都要八核心了
- 解决Spring的乱码问题
- ARM VS 英特尔:数据中心之争日趋白热化
- Android判断网络状态方法详解
- UVaOJ 120 - Stacks of Flapjacks
- AMD公司再发力 推新型64位ARM架构处理器
- android achartengine学习笔记
- 在Android开发中调用Rest web服务
- Java中的回调机制
- NVIDIA计划推出ARM架构高性能CPU
- Google工程师多图详解Android系统架构
- 使用Ant自动构建Android版本
- Glib交叉编译:g__cancellable_lock undeclared!&HEADER/C_IN undeclared!&undefined reference to "localeconv"