问题描述

  一天,小 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. 图片上传-本地图片转base64+ie8支持+本地预览支持

    最近项目由于flash同学没在了,图片上传只能前端重新做,后台希望用base64数据上传,复用之前接口 问题来了, 1.ie8 不支持canvas转base64 2.本地预览 base64数据,ie8 ...

  2. 导入的Android项目出现红色感叹号

    [原因]  项目中存在导入包,在项目导入之后,classpath指向的包路径出现错误,即需要重新Bulidpath [解决方式]  右键项目名称 BuildPath —> Configure B ...

  3. ACM学习历程—SNNUOJ1214 矩阵1(二分)

    题目链接:http://219.244.176.199/JudgeOnline/problem.php?id=1214 这是这次微软实习面试的一道题,题目大意就是:有一个n*m的矩阵,已知它每一行都是 ...

  4. 「BJOI2018」链上二次求和

    「BJOI2018」链上二次求和 https://loj.ac/problem/2512 我说今天上午写博客吧.怕自己写一上午,就决定先写道题. 然后我就调了一上午线段树. 花了2h找到lazy标记没 ...

  5. 【ASP.NET Web API2】利用HttpClient调用Web API(TODO)

    参照: 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 纯属记录一下遇到的问题: 我们利用HttpClient来调用自宿主方式寄宿的Web API.HttpCl ...

  6. Maven:Resource Path Location Type Project configuration is not up-to-date with pom.xml. Run project configuration update

    Maven构建项目的时候提示: Description Resource Path Location Type Project configuration is not up-to-date with ...

  7. AfxExtractSubString 函数的相关问题

    AfxExtractSubString函数的用法 注:本文系rainy8758原创,转载请注明出处:http://blog.hjenglish.com/rainy8758/articles/10109 ...

  8. CF gym 101933 K King's Colors —— 二项式反演

    题目:http://codeforces.com/gym/101933/problem/K 其实每个点的颜色只要和父亲不一样即可: 所以至多 i 种颜色就是 \( i * (i-1)^{n-1} \) ...

  9. IDEA 设置导出

    见附件 https://files.cnblogs.com/files/chuancheng/settings.7z

  10. array_diff函数的注意事项

    array_diff — 计算数组的差集 说明: array array_diff ( array $array1 , array $array2 [, array $... ] ) 对比返回在 ar ...