当前位置: 首页 > 编程日记 > 正文

【ACM】【STL】stack应用

C++ Stacks(堆栈)

C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。

操作比较和分配堆栈
empty()堆栈为空则返回真
pop()移除栈顶元素
push()在栈顶增加元素
size()返回栈中元素数目
top()返回栈顶元素

现学现用:

一、POJ 1363 Rails

http://poj.org/problem?id=1363

应用stack,本题还需要注意输入格式,输出格式。

题目大意:给你一个出栈顺序,判断这个出栈顺序是否合法。先将出栈顺序保存在数组output中,然后按照顺序进栈,让目前这个进栈的数和与正在指向的那个output数组里的数相同时,则说明这个进栈的数是要出栈的,所以input.pop(),当所有的数都都按照顺序放在stack中,即i==n时,结束循环之前i++,则推出了循环,这时如果k==n 或者 栈为空,都可以作为判断条件

#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;
int output[1000+5];
int main()
{int n,i,k;while(scanf("%d",&n) && n){while(scanf("%d",&output[0]) && output[0])//b数组用来储存出栈顺序{for(i=1;i<n;i++)scanf("%d",&output[i]);stack<int> input;i=1;//赋值k=0;while(i<=n){input.push(i);//表示进栈while(input.top()==output[k])//当目前进栈的元素等于要出栈的元素时,则表示,该元素出栈,从input数组里去掉{if(!input.empty())	input.pop();k++;if(input.empty())	break;//全部出栈}i++;//这里的j++表示新的进栈元素的下标是刚出栈元素的下标,新的进栈元素就是i++之后的。}if(k==n)//if(input.empty())printf("Yes\n");elseprintf("No\n");}printf("\n");}return 0;
}

还有不利用stack,直接用两个数组进行模拟

#include <iostream>
#include <cstdio>
using namespace std;
int output[1000+10],input[1000+10];
int main()
{int n,i,j,k;while(scanf("%d",&n) && n){while(scanf("%d",&output[0]) && output[0])//b数组用来储存出栈顺序{for(i=1;i<n;i++)scanf("%d",&output[i]);i=1;j=0;k=0;while(i<=n && j<n){input[j]=i;//表示进栈while(input[j]==output[k])//当目前进栈的元素等于要出栈的元素时,则表示,该元素出栈,从input数组里去掉{j--;k++;if(j==-1)	break;//全部出栈}i++;j++;//这里的j++表示新的进栈元素的下标是刚出栈元素的下标,新的进栈元素就是i++之后的。}if(k==n)printf("Yes\n");elseprintf("No\n");}printf("\n");}return 0;
}

二、Text Reverse

http://acm.hdu.edu.cn/showproblem.php?pid=1062

遇到空格,就输出栈里的内容,可能存在又两个空格的情况,所以中间的continue要特别注意

#include <iostream>
#include <cstdio>
#include <stack>
#include <cstring>
using namespace std;
int output[1000+5];
int main()
{int i,T,len;char str[1010];stack<char> s;cin >>T;getchar();while(T--){i=0;memset(str,0,sizeof(str));gets(str);while(str[i]){if(str[i]==' '){while(!s.empty()){printf("%c",s.top());s.pop();}printf(" ");i++;continue;}s.push(str[i]);i++;}while(!s.empty()){printf("%c",s.top());s.pop();}printf("\n");}return 0;
}

还有另外一种做法,用到一个函数strrev()

#include<stdio.h>
#include<string.h>
int main()
{int t;scanf("%d\n",&t);while(t--){char s[1005]={};while(scanf("%[^ \n]",s)!=EOF){printf("%s",strrev(s));s[0]=0;putchar(getchar());}}return 0;
}

如果:

scanf("%[^ \n]",s)

换成

scanf("%[^\n]",s)

则是一整行进行反转

三、Train Problem I

http://acm.hdu.edu.cn/showproblem.php?pid=1022

和第一题不一样的地方在于在判断满足条件以后,需要把火车进站出站的顺序写出来,所以第一个stack用来判断是否满足条件,第二次右重新来一遍,来输出in 和 out 。(这只是我的方法,如果大家有更好的方法,希望大家能够评论,一起探讨)

#include <iostream>
#include <set>
#include <cstdio>
#include <string>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <sstream>
typedef long long ll;
using namespace std;int main ()
{string in,out;int N;while(scanf("%d",&N)!=EOF){cin >> in >> out;stack<char> s1,s2;int i,j;i=0;j=0;while(i<in.length()){s1.push(in[i]);while(s1.top()==out[j]){s1.pop();j++;if(s1.empty())break;}i++;}if(j==out.length())cout << "Yes.\n";else{cout << "No.\nFINISH\n";continue;}i=0;j=0;while(i<in.length()){s2.push(in[i]);cout << "in\n";while(s2.top()==out[j]){s2.pop();cout << "out\n";j++;if(s2.empty())break;}i++;}cout << "FINISH\n";}return 0;
}

暂时只找到这三个题,之后有发现会继续补充,大家也可以在评论中推荐! :)

相关文章:

CHUCK手把手带你搞定OPENSTACK

以下是原文链接&#xff1a;http://blog.oldboyedu.com/openstack/转载于:https://blog.51cto.com/bovin/1858198

JVM基础面试题及原理讲解

2019独角兽企业重金招聘Python工程师标准>>> 本文从 JVM 结构入手&#xff0c;介绍了 Java 内存管理、对象创建、常量池等基础知识&#xff0c;对面试中 JVM 相关的基础题目进行了讲解。 写在前面&#xff08;常见面试题&#xff09; 基本问题 介绍下 Java 内存区域…

SLAM前端 ---------特征提取之ORB(ORB与SIFT与SURF)

ORB 论文翻译&#xff1a; 一种特征匹配替代方法&#xff1a;对比SIFT或SURF 1.ORB特征简介 ORB是Oriented FAST and Rotated BRIEF&#xff08;oFAST and rBRIEF&#xff09;的简称&#xff0c;ORB的名字已经说明了其来源&#xff0c;其实ORB特征是采用FAST方法来检测提取特…

oracle 内存分配和调优 总结

一直都想总结一下oracle内存调整方面的知识&#xff0c;最近正好优化一个数据库内存参数&#xff0c;查找一些资料并且google很多下。现在记录下来&#xff0c;做下备份。 一、概述&#xff1a; oracle 的内存可以按照共享和私有的角度分为系统全局区…

【ACM】Doubly Linked List(STL list)

题目链接&#xff1a;https://vjudge.net/problem/Aizu-ALDS1_3_C 这一题一开始的时候想的是用vector&#xff0c;超时 #include <iostream> #include <stack> #include <cstdio> #include <cstring> #include <queue> #include <vector>…

IOS获取焦点页面上移问题

var u navigator.userAgent; var flag; var myFunction; var isIOS !!u.match(/(i1;( U;)? CPU.Mac OS X/); if (isIOS) { document.body.addEventListener(focusin, () > { //软键盘弹起事件flag true;clearTimeout(myFunction); }) document.body.addEventListener(f…

SLAM之特征匹配(二)————RANSAC--------翻译以及经典RANSAC以及其相关的改进的算法小结

本文翻译自维基百科&#xff0c;英文原文地址是&#xff1a;http://en.wikipedia.org/wiki/ransac RANSAC是“RANdom SAmple Consensus&#xff08;随机抽样一致&#xff09;”的缩写。它可以从一组包含“局外点”的观测数据集中&#xff0c;通过迭代方式估计数学模型的参数…

【ACM】树 小结

树是一种表达层级结构的数据结构&#xff0c;也是实现高效算法与数据结构的基础。 学习之前的基础&#xff1a;数组&#xff0c;循环处理&#xff0c;结构体&#xff0c;递归函数。 树&#xff1a;由结点&#xff08;node&#xff09;和连接结点的边&#xff08;edge&#xf…

【cocos2d-js官方文档】九、cc.loader

概述 原来的cc.Loader被改造为一个单例cc.loader&#xff0c;采用了插件机制设计&#xff0c;让loader做更纯粹的事。 各种资源类型的loader可以在外部注册进来&#xff0c;而不是直接将所有的代码杂揉在cc.Loader中&#xff0c;更好的方便管理以及用户自定义loader的创建。 cc…

更换VC后DDC提示证书不可用

问题描述&#xff1a;客户环境由Windows VC更换成Linux VC后&#xff0c;DDC提示证书不可用问题原因&#xff1a;因为VC更换后&#xff0c;存储在DDC数据库HostingUnitServiceSchema.HypervisorConnectionSSLThumbprint表中证书指纹信息和新得VC证书指纹信息不匹配。解决方法&a…

尺度空间理论与图像金字塔

我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性。也就是说使用卷积就是为了提取显著特征&#xff0c;减少特征维数&#xff0c;减少计算量。 在对图像进行卷积操作后的只管现象&#xff1a;图像变得模糊了&#xff0c;可是我们依然能够分辨出是什么&#x…

【ACM】 multiset 的 一些应用

一、The kth great number 题目链接&#xff1a;https://vjudge.net/problem/HDU-4006 用set写超时 &#xff08;在VJ里&#xff0c;用C显示Compilation Error&#xff0c;选择G&#xff0c;则是TLE&#xff09; #include <iostream> #include <set> #include &…

apache2.2 做后端,增加真实ip到日志中

apache2.2使用mod_remoteip模块 一.安装 wget https://github.com/ttkzw/mod_remoteip-httpd22/raw/master/mod_remoteip.c/usr/local/apache/bin/apxs -i -c -n mod_remoteip.so mod_remoteip.c 二.添加Apache配置vi /usr/local/apache/conf/httpd.confInclude conf/extra/htt…

高可用方案系统架构

2019独角兽企业重金招聘Python工程师标准>>> 高可用方案 系统架构 转载于:https://my.oschina.net/qiongtaoli/blog/3007587

OpenCV3.2.0+VS2017在window10开发环境配置记录

本机环境&#xff1a;win10 64位 OpenCV3.2.0 Visual Studio 2017 最后结果&#xff0c;亲测可用OpenCV官方下载地址&#xff1a; http://opencv.org/releases.html#本人选择opencv3.2.0基于Windows平台。读者根据自己需要选择合适版本及平台下载。 选择window版本的opencv下载…

C++vector迭代器失效的问题

转载:http://blog.csdn.net/olanmomo/article/details/38420907 转载:http://blog.csdn.net/stpeace/article/details/46507451 转载:http://www.cnblogs.com/xkfz007/articles/2509433.html 转载:http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/13/2636375.html 有这样…

【HDU】1251统计难题 (字典树:二维数组,结构体数组,链表,map)

使用二维数组或者结构体数组都可以&#xff0c;但是在计数的时候有一点点小区别 一、结构体数组 #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <string> typedef long long ll; using namespace…

Jmeter干货 不常用却极其有用的几个地方

1. Jmeter测试计划下Run Thread Groups consecutively 表示序列化执行测试计划下所有线程组中的各个请求 如下图配置&#xff0c;新建的测试计划中&#xff0c;不默认勾选此项&#xff0c; 而享用Jmeter做接口自动化测试的同学们&#xff0c;会发现一个问题是&#xff0c;可能多…

图像滤波总结(面试经验总结)

目录 图像平滑处理&#xff0c;6种滤波总结的综合示例 【盒式滤波、均值滤波、高斯滤波、中值滤波、双边滤波导向滤波】 1-图像滤波 2-代码演示 3-显示结果 4-程序说明 5 角点检测&#xff08;Harris,Fast,surf&#xff09; 图像平滑处理&#xff0c;6种滤波总结的综合示…

【小贴士】DEV 多行注释

多行注释 Ctrl / 取消多行注释 Ctrl &#xff0c;

JSP+Servlet基础一

2019独角兽企业重金招聘Python工程师标准>>> JSP中的指令: 格式&#xff1a;<%指令的名称(page&#xff0c;taglib&#xff0c;include...) 属性属性值%> 指令中的page&#xff1a;用于整个页面&#xff0c;定义与页面相关的属性。page属性一共有13个。 1、常…

Chameleon跨端框架——壹个理想主义团队的开源作品

文章较长&#xff0c;信息量很大&#xff0c;请耐心阅读&#xff0c;必然有收获。下面正文开始~背景解决方案原理久经考验生产应用举例易用性好多态协议学习成本低渐进式接入业内对比后期规划理想主义历经近20个月打磨&#xff0c;滴滴跨端方案chameleon终于开源了github.com/d…

尺度空间理论与图像金字塔(二)

SIFT简介 整理一下方便阅读&#xff0c;作者写的东西摘自论文&#xff0c;在此感谢xiaowei等的贡献 DoG尺度空间构造&#xff08;Scale-space extrema detection&#xff09;http://blog.csdn.net/xiaowei_cqu/article/details/8067881关键点搜索与定位&#xff08;Keypoint l…

仿桌面通知pnotify插件

在做网站的时候&#xff0c;alert弹出框是非常常见的情形。但是&#xff0c;有些情况下&#xff0c;弹框对用户来说是并不友好的。调研了几个其他的提示插件了&#xff0c;发现pnotify比较好用&#xff0c;可配置性也高。 使用示例&#xff1a; <!DOCTYPE html> <html…

【HDU】1305 Immediate Decodability(字典树:结构体数组,二维数组,链表/指针)

一、用的二维数组 #include <iostream> #include <cstring> #include <algorithm> using namespace std;const int maxn 100; int tr[maxn][2]; int mk[maxn]; int tot;void insert(string s) {int u 0;for(int i0;i<s.length();i){int x s[i]-0;if(tr…

Hyperledger Grid:一个用于分布式供应链解决方案的框架

Hyperledger在最近的一篇博文中发布了一个名为Hyperledger Grid的新项目。Grid是一个用于集成分布式账本技术&#xff08;DLT&#xff09;解决方案与供应链行业企业业务系统的框架。该项目提供了一个参考架构、通用数据模型和智能合约&#xff0c;所有这些都是基于开放标准和行…

尺度不变特征变换匹配算法详解

尺度不变特征变换匹配算法详解Scale Invariant Feature Transform(SIFT)Just For Fun对于初学者&#xff0c;从David G.Lowe的论文到实现&#xff0c;有许多鸿沟&#xff0c;本文帮你跨越。1、SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视…

【POJ】2503 Babelfish(字典树,map,指针)

一、map 输入时候的格式有点难想&#xff0c;还有一种想法是用gets读取&#xff0c;然后用sscanf分开&#xff0c;分别存到两个数组中去&#xff0c;再加入map中&#xff0c;但是这一种方法目前还没有实现。。 #include <iostream> #include <cstring> #include …

ndk-build: CreateProcess error=193

为什么80%的码农都做不了架构师&#xff1f;>>> 问题&#xff1a;ndk-build": CreateProcess error193 解决&#xff1a;该问题表明&#xff0c;调用了非windows程序&#xff0c;在build.xml中将ndk-build修改为ndk-build.cmd即可ant编译 转载于:https://my.o…

AI芯片初创公司单纯卖芯片还是捆绑算法的商业模式更好?...

雷锋网在《资本寒冬&#xff0c;这样的AI芯片公司2019年危矣》一文中已经提到&#xff0c;2019年的资本寒冬以及整个半导体行业的低迷&#xff0c;将会让那些没有技术独特性以及缺乏商业落地能力&#xff0c;且现金流控制不好的AI芯片公司面临巨大的挑战&#xff0c;甚至大概率…