数据结构 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版)
上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...
随机推荐
- bzoj 5403 Marshland
$n \leq 50$ sol: 放一个在 $x$ 处拐弯的 $L$ 形石头相当于在水平和垂直方向上各选一个与 $x$ 相邻的点,全局不能重复选 最小化危险度,相当于满足这些限制的情况下石头盖住的点危 ...
- 浅谈FFT(快速傅里叶变换)
本文主要简单写写自己在算法竞赛中学习FFT的经历以及一些自己的理解和想法. FFT的介绍以及入门就不赘述了,网上有许多相关的资料,入门的话推荐这篇博客:FFT(最详细最通俗的入门手册),里面介绍得很详 ...
- MySQL下分页查询数据
-- 分页 -- 前两条 -- 启始位置从下标0开始,查询的是数据库中的第1条开始 -- 0:启始位置 2:一次性查询多少条 select * from account LIMIT 0,2; -- ...
- Git 常用命令详解(三)
转自:http://www.cnblogs.com/1-2-3/archive/2010/07/18/git-commands.html
- BZOJ5206: [Jsoi2017]原力
BZOJ5206: [Jsoi2017]原力 https://lydsy.com/JudgeOnline/problem.php?id=5206 分析: 比较厉害的三元环问题. 设立阈值,当点的度数大 ...
- bzoj 2013: A huge tower 数学
题目: 有\(N(2\leq N\leq 620000)\)块砖,要搭一个\(N\)层的塔,要求:如果砖\(A\)在砖\(B\)上面,那么\(A\)不能比\(B\)的长度\(+D\)要长.问有几种方法 ...
- PLSQL Developer 攻略
.Net程序员学用Oracle系列(18):PLSQL Developer 攻略 1.功能说明及使用技巧 1.1.对象浏览器 1.2.SQL 窗口 1.3.测试窗口 1.4.命令窗口 1.5.图表 ...
- 如何找回未保存过的 Excel 文件?
如何找回未保存过的 Excel 文件? 同事做了一个文件,未保存直接关闭,正常是找不回来的. 但是 Excel 有一个强大的自动保存功能,对没有保存的文件也可以找回.
- 类型:.net;问题:iis注册;结果:.net4.0注册到IIS ,重新注册IIS ,iis注册
.net4.0注册到IIS ,重新注册IIS ,iis注册 IIS和.netfw4.0安装顺序是从前到后,如果不小心颠倒了,无所谓. 打开程序-运行-cmd:输入一下命令重新注册IIS C:\WI ...
- 常见浏览器bug以及解决方法
1.图片下方3像素: (1).描述:在div中插入图片时,图片会将div下方撑大三像素. (2).hack1:将</div>与<img>写在一行上(可以解决ie6/7): (3 ...