博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1363 Rails 判断出栈序列是否合法
阅读量:4591 次
发布时间:2019-06-09

本文共 1433 字,大约阅读时间需要 4 分钟。

题目链接:   (lrj白书习题)  
题目大意:判断一个出栈序列能不能从1,2,3,……,n 经过栈处理后生成。
思路: Ⅰ:
定理
出栈序列不合法 <=> 存在k,满足i<j<k,使得S[k]<S[i]<S[j]。(i,j,k是入站顺序,s[i],s[j],s[k]是出栈顺序)。 如果用这个定理判断则需要O(n^3)的时间,不合适。 Ⅱ:模拟即可:模拟入栈,①如果当前要进栈的元素是下一个要出栈元素则直接让他入栈出栈就行了,跳到下一个。 ②如果当前栈顶元素是下一个要出栈元素则让它出栈。 ③否则把当前元素进栈来看下一个 当要进栈的所有元素都处理后,依次弹出栈内元素,如果有和出栈元素不符的则出栈序列不合法。
#include #include #include #include using namespace std;int s[1010];int main(){    //freopen("data.txt","r+",stdin);    int n;    while(cin>>n){        if (n == 0) break;        while(cin>>s[0]){            stack  t;            //memset(s,0,sizeof(s));            if (s[0] == 0){                break;            }            for (int i = 1; i < n; i ++){                cin>>s[i];            }            int b = 0;            int i = 0;            while (i < n){                if (i + 1 == s[b]){                    b ++;                    i ++;                }                else if (!t.empty() && t.top() == s[b]){                    t.pop();                    b ++;                }                else{                    t.push(i + 1);                    i ++;                }            }            int ok = 1;            while(!t.empty() && b < n){                if (t.top() != s[b]){                    ok = 0;                    break;                }                t.pop();                b ++;            }            if (ok) cout<

转载于:https://www.cnblogs.com/AbandonZHANG/archive/2012/11/17/4113946.html

你可能感兴趣的文章
bootstrap中栅格系统的原理
查看>>
webpack基础入门
查看>>
Android为TV端助力(转载)
查看>>
浏览器中开发人员工具快速找到dom元素绑定那些JS事件
查看>>
js数据结构与算法——集合
查看>>
程序员技术练级攻略(转载)
查看>>
Servlet入门
查看>>
【JQuery】jQuery(document).ready(function($) { });的几种表示方法及load和ready的区别
查看>>
单目运算符-双目运算符-三目运算符
查看>>
canvas图像以及剪切
查看>>
cookie ,session Storage, local storage
查看>>
finereport9.0破解版|finereport10.0破解并发数|finereport授权注册|FineBI5.0破解lic
查看>>
用10张图来看机器学习Machine learning in 10 pictures
查看>>
使用node.js定义一个web服务器
查看>>
任务16 被动信息收集
查看>>
1282: 排列计数 perm
查看>>
牛客小白月赛15 C 表单 ( map 使用)
查看>>
oracle中的索引
查看>>
STM8S——Analog/digital converter (ADC)
查看>>
LeetCode-211 Add and Search Word - Data structure design
查看>>