博客
关于我
吐泡泡(栈)
阅读量:345 次
发布时间:2019-03-04

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

问题链接https://ac.nowcoder.com/acm/problem/15029

#include<bits/stdc++.h>using namespace std;int main(){       char p[120];    while(cin>>p){           int l=strlen(p);        stack<char> a;        for(int i=0;i<l;i++){               if(a.empty()){                   a.push(p[i]);            }else{                   if(a.top()=='O'&&p[i]=='O'){                       a.pop();                }                else if(a.top()=='o'&&p[i]=='o'){                       a.pop();                    if(!a.empty()&&a.top()=='O'){                           a.pop();                    }else{                           a.push('O');                    }                }                else{                       a.push(p[i]);                }            }        }        char k[120];        int t=0;        while(!a.empty()){               k[t++]=a.top();            a.pop();        }        for(int i=t-1;i>=0;i--){               cout<<k[i];        }        cout<<endl;    }    return 0;}

想整理的几点:
1.对于一个字符串的输入输出
char型可以直接用cin cout,也可以用gets();string用getline(cin,a);
2.对于stl中栈的简单应用 stack a;

  1. a.push() 入栈,将元素加到栈顶
  2. a.top() 返回栈顶元素
  3. a.pop() 删除栈顶元素,不返回
  4. a.empty() 判断栈中是否为空,为空返回true
  5. a.size() 返回栈中元素的个数

对于题目,就是将oO气泡输入进数组,然后通过入栈出栈的操作,如果是两个小气泡,就合成大气泡,再在栈顶调出一个元素继续判断是不是大气泡,如果是就破掉。同理判断到两个大气泡直接破掉。最后再用数组完成一次倒序,把栈底变成序列首。

转载地址:http://nqdr.baihongyu.com/

你可能感兴趣的文章
怎么玩LOG4J
查看>>
Oracle创建用户,分配表空间
查看>>
自定义标签(JSP2.0)简单标签
查看>>
MyBatis自定义类型转换器
查看>>
机器学习(湖北师范大学教程)-极大似然估计算法
查看>>
读《红楼梦》有感
查看>>
【C# 重构】—参数化查询, 需要参数,但未提供该参数
查看>>
决策树(二)—— ID3和C4.5
查看>>
MySQL~教你满分回答什么是数据库索引? 索引的数据结构是什么? 什么是事务?
查看>>
操作系统~进程的状态、转换、控制
查看>>
操作系统~线程概念以及多线程模型
查看>>
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,时间复杂度均为O(1))
查看>>
Python:函数 ----》装饰器函数
查看>>
Python:面向对象
查看>>
Python练习题 :随机生成一批数
查看>>
Spring源码:prepareBeanFactory(beanFactory);方法
查看>>
Spring源码:initApplicationEventMulticaster源码解析
查看>>
AcWing 786: 第k个数
查看>>
AcWing 828. 模拟栈
查看>>
AcWing 4. 多重背包问题(带有个数限制的完全背包问题dp)
查看>>