问题描述

  一天,小 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的更多相关文章

  1. LeetCode_算法及数据结构覆盖统计

    [输入]共计151道题的算法&数据结构基础数据 (见附录A) [输出-算法]其中有算法记录的共计 97道 ,统计后 结果如下  top3(递归,动态规划,回溯) 递归 动态规划 回溯 BFS ...

  2. 134. Gas Station加油站

    [抄题]: There are N gas stations along a circular route, where the amount of gas at station i is gas[i ...

  3. hdu 1022:Train Problem I(数据结构,栈,递归,dfs)

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  4. POJ 2031 Building a Space Station【经典最小生成树】

    链接: http://poj.org/problem?id=2031 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...

  5. 算法与数据结构基础 - 贪心(Greedy)

    贪心基础 贪心(Greedy)常用于解决最优问题,以期通过某种策略获得一系列局部最优解.从而求得整体最优解. 贪心从局部最优角度考虑,只适用于具备无后效性的问题,即某个状态以前的过程不影响以后的状态. ...

  6. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  7. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  8. 深入浅出Redis-redis底层数据结构(上)

    1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...

  9. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

随机推荐

  1. CodeForces - 1025F:Disjoint Triangles (几何)

    A point belongs to a triangle if it lies inside the triangle or on one of its sides. Two triangles a ...

  2. Vue 将样式绑定到一个对象让模板更清晰

    Vue 将样式绑定到一个对象让模板更清晰 <div id="app"> <div v-bind:style="styleObject"> ...

  3. TCP状态详解

            CLOSED: 这个没什么好说的了,表示初始状态.   LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了.   SYN_RCV ...

  4. 在MySQL中设置事务隔离级别有2种方法:

    在MySQL中设置事务隔离级别有2种方法: 1 在my.cnf中设置,在mysqld选项中如下设置 [mysqld] transaction-isolation = READ-COMMITTED 2 ...

  5. 把Azure专线从Class模式迁移到ARM模式

    前面几篇文章介绍了Azure的ASM模式和ARM模式.很多用户已经在ASM模式下部署了Azure的专线服务,如果部署的应用是ARM模式,或ASM模式和ARM模式都有,就需要把ASM模式的专线迁移到AR ...

  6. Composer + thinkphp5.1安装与使用

    Composer 是 PHP 的一个依赖管理工具.我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我 ...

  7. Python编码(encode)和解码(Decode)常见的两个错误

    项目地址:https://git.io/pytips 0x07 和 0x08 分别介绍了 Python 中的字符串类型(str)和字节类型(byte),以及 Python 编码中最常见也是最顽固的两个 ...

  8. IIS:配置参数

    ylbtech-IIS:配置参数 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶部   ...

  9. C#改变LInqToSQL的引用地址,读取config的数据库字符串

    C#改变LInqToSQL的引用地址,读取config的数据库字符串修改Properties 下 Settings.Settings 下 Settings.Designer.cs 下 return ( ...

  10. 类型:Java;问题:eclipse配置maven;结果:eclipse配置maven

    eclipse配置maven 下面跟大家分享的是eclipse配置maven的方法. 方法/步骤 安装maven之前,要先安装jdk及配置JAVA_HOME环境变量.JDK1.4以上. 下载maven ...