关于vector的清空

vectorname.clear();

vectorname.clear()函数并不会把所有元素清零,vector有两个参数,一个是size,表示当前vector容器内存储的元素个数,一个是capacity,表示当前vector在内存中申请的这片区域所能容纳的元素个数。

通常capacity会比size大,如果往vector中push_back数据,这样就不用重新申请内存和拷贝元素到新内存区域了,便于节省时间。

所以vector.clear()的真正作用是:把size设置成0,capacity不变

但是在本题中,使用vectorname.clear(),在每次循环开始的时候把vector设置为空容器,还是可以的。

C++ STL库中有专门的stack,在头文件中包含<stack>即可,下面代码贴出了两种方法,一种是直接使用stack,另一种是使用vector模拟出stack的效果。

描述

愚人节到了,祝大家节日快乐~作为源代码的主要领导人,DarkZero同学想了个愚弄大家的好办法——送礼物。嘿嘿,不要想的太好,哪儿能给你们那么轻易空手套白狼,DarkZero为了愚人,准备了很多套娃,其中有一个套娃里面装了礼物,这个套娃里也可能还有套娃,为的就是让你稍微不注意就没看到礼物。套娃里面可以再放若干个套娃,也可以不放,完全看他心情。用[]表示一个套娃,G表示礼物,DarkZero想让你帮他算出愚人指数,即运气最好的人需要打开多少个套娃就能拿到礼物。

输入
第一行包含一个整数T,代表测试样例数。
接下来每行代表一个测试样例,每行中有一个字符串,包含’[’,’]'和’G’三种字符。每行长度不超过200。

输出
对每个测试样例输出一行,一行中包含一个数字,代表最少需要打开的套娃数。

样例输入

2
[[G]]
[G][]

样例输出

2
1

提示
这道题目可以使用简单的动态规划来求解,或者使用搜索加剪枝的方法。测试样例有很多,写的不好可能会超时。

我的测试用例

输入:[[[[][[[[]]][[][[]][][][][][[[[]]]]]]][G]
答案:1

代码

方法1:vector

#include<iostream>
#include<string>
#include<vector>
using namespace std;int main()
{int total;cin >> total;vector<char> stackStr;string str;int j;for (j = 0; j < total; j++){cin >> str;int i;stackStr.clear();for (i = 0; i < str.length(); i++){if (str[i] == 'G'){cout << stackStr.size() << endl;}else{if (stackStr.size() == 0)//栈为空{stackStr.push_back(str[i]);//入栈}else if (*(stackStr.end() - 1) == '['&&str[i] == ']')//匹配{stackStr.erase(stackStr.end() - 1);//出栈}else{stackStr.push_back(str[i]);//入栈}}}}system("pause");
}

方法2:stack

#include<iostream>
#include<string>
#include<stack>
using namespace std;int main()
{int total;cin >> total;stack<char> stackStr;string str;int j;for (j = 0; j < total; j++){cin >> str;int i;while (!stackStr.empty()){stackStr.pop();}for (i = 0; i < str.length(); i++){if (str[i] == 'G'){cout << stackStr.size() << endl;break;}else{if (stackStr.size() == 0)//栈为空{stackStr.push(str[i]);//入栈}else if (stackStr.top() == '['&&str[i] == ']')//匹配{stackStr.pop();//出栈}else{stackStr.push(str[i]);//入栈}}}}cout << endl;system("pause");
}
//[][][[][[]][]][[]][][[[[[[[]]]][][]][[][[]][[[[G[]][]][]]][]]]][[][]][][[][]][][]
//答案:7

ACM练习 愚人节拆括号【vector的清空 栈的使用】相关推荐

  1. c++实现简单的数据结构(1.链表合并 2.士兵队列训练问题 3.Rails 4.Josephus Problem 5.Tree Recovery 6.四则运算 7.愚人节的礼物 8.Web)

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...

  2. HDU 1870 愚人节的礼物 栈的应用

    愚人节的礼物 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. HDU1870 愚人节的礼物【堆栈+输入输出+水题】

    愚人节的礼物 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. HDU1870 愚人节的礼物【堆栈+输入输出】

    愚人节的礼物 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  5. 1870 愚人节的礼物

    愚人节的礼物 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. 【HDU 1870 --- 愚人节的礼物】栈水题

    [HDU 1870 --- 愚人节的礼物]栈水题 Description 四月一日快到了,Vayko想了个愚人的好办法--送礼物.嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆 ...

  7. HDU 1870解题报告(愚人节的礼物)

    愚人节的礼物 Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %I64d , %I64u Java class ...

  8. 牛客2021年愚人节比赛 【题解】

    很有意思的一套题,难度不大,不过题目很有意思. 比赛链接:https://ac.nowcoder.com/acm/contest/12800 目录 A: 出愚人节欢乐赛 B: 你这题,狗屁不通 C: ...

  9. 1045: 愚人节的礼物

    1045: 愚人节的礼物 时间限制: 1 Sec  内存限制: 128 MB 提交: 169  解决: 137 [提交][状态][讨论版] 题目描述 四月一日快到了,Vayko 想了个愚人的好办法-- ...

最新文章

  1. java 详解 搭建 框架_在Eclipse中搭建Struts框架过程详解
  2. ArrayList、LinkedList、 Vector、Map 用法比较
  3. leetcode1482. 制作 m 束花所需的最少天数(二分法)
  4. java下拉列表 动态_【示例】教你简单用Java写一个动态更新的下拉列表(无数据库)...
  5. 用pycharm写python老是提示错误_python pycharm错误集锦
  6. MySQL 异常有这一篇就够了!
  7. python graphviz中文乱码_graphviz画图与中文乱码等问题总结
  8. 图数据库 graph_通过SQL Server中的自连接了解Graph数据库相对于关系数据库的好处
  9. 个人网站Timonj(Personal website)
  10. Nebula Graph 在企查查的应用
  11. 2018.8.7 ACM 信息学奥赛之数学一本通 暑假训练总结(生死看淡,不服就干)
  12. 集合类 Java中的集合类解析和一些有深入的面试题
  13. nodejs无法下载puppeteer附带的chromium解决方案
  14. 2022年中国服务外包行业发展现状及未来发展趋势分析:执行额达1753.5亿美元,同比增长10.92%[图]
  15. apose-cell-22.6 excel转换pdf水印去除
  16. 动手焊板子流水账-测温数码管电机联动
  17. 最新:拼多多将追回所有“薅羊毛”订单,包括已充值话费和Q币订单
  18. 【高考那些事】准大学生看过来,选择方向和未来,自己把握
  19. COBOL语言总结(三)--JCL扩展
  20. python课程报告论文包含代码数据_归纳与总结一:Requests的使用

热门文章

  1. TensorFlow2-循环神经网络
  2. Cloud Programming Simplified: A Berkerley View on Serverless Computing笔记
  3. Python基础01-变量及数据类型
  4. HDU3400(计算几何中的三分法利用)
  5. 习题11-7 奇数值结点链表 (20 分) -链表
  6. nginx系列之六:cache服务
  7. 【Boost】boost库asio详解7——boost::asio::buffer用法
  8. Python中is和==有什么区别?
  9. XCode发布IPA离线安装包步骤
  10. sync.Once 的前世今生