栈
2016-05-10 22:02
204 查看
今天我做了一个题大约是这样的:
输入:(多组输入)
首先输入一个值(d)表示接下来的输入中有几个数(1 < d < 2*10^5)
接下来输入(d)个数(数只有0和1组成)当每个数与它后也个数不同时就会使就会使这个数与其后面的数一同消失;
输出:
一共会剩下几个数。
样例:
输入:
4
1010
输出:
0
这个题一开始我的预想使用栈的思想,没想到还是用麻烦了啊!哎!
用栈的思想:
#include
#include
#define MAX_N 200005
char ch[MAX_N]; //题目中所要求的(d)
char stack[MAX_N]; //按要求存入的栈
int top; //栈的顶部(也就是栈内一共有几个数)
int main()
{
int n,i;
while(~scanf("%d",&n)) //多组输入
{
scanf("%s",ch);
top = -1; //先使栈顶为-1也就是空栈
for(i = 0; i < n; i++)
{
if(top >= 0 && stack[top] != ch[i]) //如果栈不为空栈并且栈顶元素与将要比较的元素不相同
{
top--; //栈顶出栈
}
else //如果栈为空或栈顶与将要比较的元素相同
{
stack[++top] = ch[i]; //入栈
输入:(多组输入)
首先输入一个值(d)表示接下来的输入中有几个数(1 < d < 2*10^5)
接下来输入(d)个数(数只有0和1组成)当每个数与它后也个数不同时就会使就会使这个数与其后面的数一同消失;
输出:
一共会剩下几个数。
样例:
输入:
4
1010
输出:
0
这个题一开始我的预想使用栈的思想,没想到还是用麻烦了啊!哎!
用栈的思想:
#include
#include
#define MAX_N 200005
char ch[MAX_N]; //题目中所要求的(d)
char stack[MAX_N]; //按要求存入的栈
int top; //栈的顶部(也就是栈内一共有几个数)
int main()
{
int n,i;
while(~scanf("%d",&n)) //多组输入
{
scanf("%s",ch);
top = -1; //先使栈顶为-1也就是空栈
for(i = 0; i < n; i++)
{
if(top >= 0 && stack[top] != ch[i]) //如果栈不为空栈并且栈顶元素与将要比较的元素不相同
{
top--; //栈顶出栈
}
else //如果栈为空或栈顶与将要比较的元素相同
{
stack[++top] = ch[i]; //入栈
相关文章推荐
- 不相邻的最大子数组和
- python学习-day1
- java sleep() 、yield()
- iOS开发小技巧--设置按钮圆角
- python中多层循环的一键退出
- Linux常用命令汇总--pwd
- lightoj1022&&1072&&1107&&1118&&1178&&1216【基础计算几何】
- hdoj ztr loves math 5675 (数学规律)给出一个n问是否有整数解
- 这是怎么回事呢?
- unity+Cardboard SDK VR开发教程
- ExpandableListView二级分栏详解完美用法
- HDU,1874,畅通工程续
- Linux 忘记密码
- mvc版购物车--展示订单页
- 微信红包接龙的数学分析
- PyQt5教程——组件(7)
- bzoj3065带插入区间K小值
- 操作系统进程实验课程设计
- SSH之Hibernate
- C++走向远洋——(项目二、存储班长信息的学生类、派生)