数据结构 station
问题描述
一天,小 L 突然对列车的进出站问题产生了兴趣,如下图所示:
列车只能从 A 进站,或从 B 出站。
列车从 A 进站,进站顺序为 1, 2, 3, 4, 5
列车从 B 出站,出站顺序为 5, 4, 3, 2, 1
现在,小 L 想知道:
列车从 A 进站,进站顺序为 1~n
列车从 B 出站,给定出站的顺序,判断是否可能按照这个顺序出站
★数据输入
第一行一个正整数 n(1<=n<=1000)。
第二行包含 n 个正整数,为 1~n 的某个排列
★数据输出
若能够按照给定的顺序出站,输出”YES” (没有引号)
否则,输出” NO” (没有引号)
解题思路
思路一:判断出栈序列中,比本数小的数是否按降序排列
时间复杂度O(n^2),本题1<=n<=1000,可用
易写,不易错,效率低
思路二:使用栈模拟进栈出栈
时间复杂度O(n)
易写错,效率高
code
solve 1
#include <stdio.h>
#include <stdlib.h> bool popAble(int *p,int len)
{
int i,j;
for(i=; i<len-; i++)
{
int last = p[i];
for(j=i+;j<len;j++)
{
if(p[j]<p[i])
{
if(p[j]<last)
last = p[j];
else
return false;
}
}
}
return true;
} int main()
{
int n,i;
scanf("%d", &n);
int *p = (int *)malloc(sizeof(int)*n);
for(i=; i<n; i++)
scanf("%d", p+i); if(popAble(p,n))
printf("YES\n");
else
printf("NO\n"); free(p);
return ;
}
solve 2
#include <stdio.h>
#include <stdlib.h> #define ERROR 0x7fffffff
#define TYPE int class MyStack//std::stack
{
public:
MyStack(int _maxsize):maxsize(_maxsize),size(){arr = (TYPE *)malloc(sizeof(TYPE)*maxsize);}
~MyStack() { free(arr); }
bool empty() { return size==; }
TYPE top() { return arr[size-]; }//每次用top()前应先调用empty(),判断是否为空
void pop() { --size; }//本题掉pop()前都有调top()与empty(),可保证不为空
void push(TYPE num) { arr[size++] = num; }//构造传入maxsize,保证不爆栈
private:
int maxsize;
int size;
TYPE *arr;
}; int main()
{
int n,i,j;
scanf("%d", &n);
int *p = (int *)malloc(sizeof(int)*n);//若想再省空间,此数组可省,但可读性降低
MyStack s(n); for(i=; i<n; i++)
scanf("%d", p+i); for(i=,j=;i<=n;)
{
if(i==p[j])
{
i++;
j++;
}
else if(!s.empty() && s.top()==p[j])
{
s.pop();
j++;
}
else
{
s.push(i);
i++;
}
} while(!s.empty())
{
if(s.top()==p[j])
{
j++;
s.pop();
}
else
{
printf("NO\n");
free(p);
return ;
}
}
printf("YES\n"); free(p);
return ;
}
数据结构 station的更多相关文章
- LeetCode_算法及数据结构覆盖统计
[输入]共计151道题的算法&数据结构基础数据 (见附录A) [输出-算法]其中有算法记录的共计 97道 ,统计后 结果如下 top3(递归,动态规划,回溯) 递归 动态规划 回溯 BFS ...
- 134. Gas Station加油站
[抄题]: There are N gas stations along a circular route, where the amount of gas at station i is gas[i ...
- hdu 1022:Train Problem I(数据结构,栈,递归,dfs)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- POJ 2031 Building a Space Station【经典最小生成树】
链接: http://poj.org/problem?id=2031 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
- 算法与数据结构基础 - 贪心(Greedy)
贪心基础 贪心(Greedy)常用于解决最优问题,以期通过某种策略获得一系列局部最优解.从而求得整体最优解. 贪心从局部最优角度考虑,只适用于具备无后效性的问题,即某个状态以前的过程不影响以后的状态. ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 深入浅出Redis-redis底层数据结构(上)
1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...
- 算法与数据结构(十五) 归并排序(Swift 3.0版)
上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...
随机推荐
- THUWC2017
100+20+20=140 还是很菜... T1 在美妙的数学王国中畅游 一棵树每个点有一个函数(sin,exp,一次函数),支持加边,删边,单点修改,查询一条路径在 $x$ 处的点值和 sol: 题 ...
- nodejs 安装 cnpm 命令
npm install -g cnpm --registry=https://registry.npm.taobao.org
- Http之ContentType
引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值 ...
- [转]200 OK (from cache) 与 304 Not Modified------没有这个规则(ETag是否移除)!!!from cache和304,请查看顶部的流程图!
//========没有这个规则(ETag是否移除) 20160422============// 200 OK (from cache) 与 304 Not Modified 为什么有的缓存是 20 ...
- bzoj 3028 食物——生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的 ...
- (转)c# Linq及Lamda表达式应用经验之 GroupBy 分组
本文转载自:http://www.cnblogs.com/han1982/p/4138163.html 示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Nam 分组 ...
- HTTP-Runoob:HTPP Content-Type
ylbtech-HTTP-Runoob:HTPP Content-Type 1.返回顶部 1. HTTP content-type Content-Type,内容类型,一般是指网页中存在的Conten ...
- 任意输入3个数,判断能否组成三角形(python)
任意输入3个数,判断能否组成三角形. 三角形:两边之和大于第三边 直角三角形:勾股定理 代码如下: # 输入合法性检查,必须输入正数,不支持科学计数法'''try: <语句>except ...
- idea debug的时候 启动起来超级慢
- SpringMVC—对Ajax的处理(含 JSON 类型)(2)
这里编写了一个通用的类型转换器: 用来转换形如: firstName=jack&lastName=lily&gender=1&foods=Steak&foods=Piz ...