`
249326109
  • 浏览: 56089 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

uva 120 - Stacks of Flapjacks

    博客分类:
  • acm
 
阅读更多

 

 

每次找到未排序中最大值,想flip到顶部,然后flip到底部,注意特殊情况 如果已经在顶部或者底部,就不需要多余的flip操作了。

/*
 * uva120.cpp
 *
 *  Created on: 2013-4-12
 *      Author: kevinjiang
 */
#include<cstdio>
#include<cstring>

char line[200];
int pancakes[35];
int num;

void flip(int n) {
	int tmp[35];

	for (int i = 0; i <= num - n; i++)
		tmp[i] = pancakes[i];

	for (int i = 0; i <= num - n; i++)
		pancakes[i] = tmp[num - n - i];

	printf("%d ", n);

}

int findMax(int range) {
	int max = -1;
	int index = -1;
	for (int i = 0; i < range; i++) {
		if (pancakes[i] > max) {
			max = pancakes[i];
			index = i;
		}
	}

	return index;

}

void sort() {
	//i 代表每一趟
	for (int i = 0; i < num; i++) {
		//每一趟中先找到未排序中最大值位置,然后把这个元素flip到栈顶再flip到底下,注意如果最大值已经在顶上或者底下就不用多余的flip了
		int maxIndex = -1;
		maxIndex = findMax(num - i);
		if (maxIndex == num - i - 1)
			;
		else if (maxIndex == 0) {
			flip(i + 1);
		} else {
			flip(num - maxIndex);
			flip(i + 1);
		}

	}

	printf("0\n");
}

int main() {
	setbuf(stdout,NULL);

	int tmp;
	char ch;
	int i=0;
	while(true)
	{
		scanf("%d",&tmp);
		ch=getchar();

		if(ch=='\n')
		{
			pancakes[i++]=tmp;
			num=i;
			i=0;

			for(int i=0;i<num;i++)
			printf("%d ",pancakes[i]);
			printf("\n");

			sort();

		}
		else if(ch==' ')
		{
			pancakes[i++]=tmp;
		}
		else if(ch==EOF) {
			break;
		}
		else
		;
	}

	return 0;
}

 

分享到:
评论

相关推荐

    PyPI 官网下载 | wagtail-stacks-0.2.tar.gz

    **PyPI 官网下载 wagtail-stacks-0.2.tar.gz** PyPI(Python Package Index)是Python社区广泛使用的软件包仓库,它为开发者提供了一个发布和分享Python库的平台。用户可以通过PyPI轻松地查找、安装和管理Python...

    前端开源库-hydro-clean-stacks

    "hydro-clean-stacks"是一个专为前端开发者设计的开源库,其主要目标是处理“液压清洁堆”,即从错误堆中移除与液压相关的实体,以优化应用程序的性能和稳定性。 在JavaScript编程中,错误堆是用于收集和处理运行时...

    Chapter03-Stacks-and-Queues

    数据结构--C语言描述 Chapter03-Stacks-and-Queues英文课件

    Data-structures---stacks-and-queues.zip_linux队列

    本压缩包"Data-structures---stacks-and-queues.zip"聚焦于两种重要数据结构——栈和队列,尤其关注在Linux环境下的应用。下面将详细阐述这两种数据结构的概念、特性以及在实际编程中的应用。 栈(Stack)是一种...

    fix-stacks:该程序对`MozFormatCodeAddress()`产生的堆栈帧进行后处理。

    [tests/example +0x43a0]在输出中更改为如下所示: #01: main (/home/njn/moz/fix-stacks/tests/example.c:24)与特殊堆栈框架格式不匹配的行将原封不动地传递。 默认情况下, fix-stacks使用二进制文件中存在的本机...

    python-leetcode题解之232-Implement-Queue-using-Stacks.py

    python python_leetcode题解之232_Implement_Queue_using_Stacks.py

    nim-stacks:基于序列的纯Nim堆栈实现

    在nim-stacks-master这个压缩包中,我们可以期待找到以下内容: 1. **源代码文件**:包含nim-stacks库的主要实现,可能是一个或多个.nim文件,其中定义了堆栈数据结构及其相关操作。 2. **示例或测试文件**:演示...

    Node.js开发-stacks-cli

    事实上,我知道已经有很好的名为Wappalyzer的Chrome扩展,但我仍然想为自己制作一个CLI工具。

    sls-plugin-additional-stacks:无服务器框架插件以部署和删除AWS其他堆栈

    sls-plugin-additional-stacks 无服务器框架插件以部署和删除AWS其他堆栈安装要使用npm进行安装,请在服务目录中运行以下命令: npm install --save sls-plugin-additional-stacks 然后将其添加到您的serverless.yml...

    react-native-stacks:SwiftUI启发了Stacks和Spacer视图

    SwiftUI禁止使用Stacks和Spacer观看次数VStack:垂直堆栈HStack:水平堆栈ZStack:叠加堆栈垫片:堆栈内的间距安装步骤1:在您的React Native项目中安装软件包yarn add react-native-stacks用法像这样导入您需要的...

    pub-stacks-dump:每小时在Stacks 2.0 Mainnet上更新stacks-dump

    pub-stacks-dump 该脚本用于从上的独立矿工每小时更新一次stacks-dump。 该信息通过GitHub页面发布,可通过以下链接获取:要求该脚本应在支持Bash的任何系统上运行。 如果遇到错误,请提出问题。 该脚本期望您已在...

    Java Methods-Stacks and Queues.ppt

    Java中的栈(Stack)和队列(Queue)是两种重要的数据结构,它们在程序设计中扮演着关键角色,尤其在处理对象的临时存储和管理数据流时。本篇内容主要探讨了栈和队列的不同实现方式,以及它们的应用场景。...

    svg-stacks-research

    "svg-stacks-research"是一个项目,可能涉及到对SVG图层堆栈技术的研究与应用,特别是在JavaScript环境下的实现。 在JavaScript中,SVG的优势在于可以方便地通过DOM(Document Object Model)进行操作,例如动态...

    aws-delete-stacks

    $ aws-delete-stacks mystack - Would delete 3 stack(s) eksctl-mystack-dev-cluster (19 Mar 21 12:17 UTC) myproject-vpc-mystack-dev (19 Mar 21 12:13 UTC) myproject-domain-mystack-dev (19 Mar 21 12:11 UTC...

    SoftUni-CSharp-Advanced-01-1-Stacks-and-Queues-Exercises

    SoftUni-CSharp-Advanced-01-1-Stacks-and-Queues-Exercises

    aws-cloudformation-stacks:AWS Cloudformation堆栈的集合

    aws-cloudformation-stacks AWS Cloudformation堆栈的集合 该集合将包含多个不同的AWS Cloudformation堆栈,旨在自动在AWS上进行不同的部署。 以下列表将跟踪模板涉及的主题: Ansible ... ... ...

    jmx-monitoring-stacks

    "jmx-monitoring-stacks"是一个专注于使用Java Management Extensions (JMX)进行监控的解决方案,它整合了一系列工具和技术,以提供全面、实时的系统洞察力。本文将深入探讨这个主题,解析其中涉及的关键组件,包括...

    leetcodepushfront-LeetCode_232--Implement-Queue-using-Stacks:LeetCode_2

    推前LeetCode_232--Implement-Queue-using-Stacks 使用堆栈实现队列的以下操作。 push(x) -- 将元素 x 推到队列的后面。 pop()——从队列前面移除元素。 peek() -- 获取最前面的元素。 empty() -- 返回队列是否为空...

    cs-guided-project-queues-stacks

    本项目"cs-guided-project-queues-stacks"专注于两个基本数据结构:队列(Queues)和堆栈(Stacks),它们在Python编程中有着广泛的应用。下面我们将深入探讨这两个数据结构以及它们在实际问题中的运用。 ### 队列...

    Elk-Stacks-存储库:用于网络安全的Elk Stacks存储库

    Elk-Stacks-存储库Elk Stacks用于网络安全的存储库自动化ELK堆栈部署该存储库中的文件用于配置以下所示的网络。 这些文件已经过测试,并用于在Azure上生成实时ELK部署。 它们可用于重新创建上图所示的整个部署。 ...

Global site tag (gtag.js) - Google Analytics