专栏文章
题解:P13414 [COCI 2012/2013 #4] ESEJ
P13414题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miorn3vu
- 此快照首次捕获于
- 2025/12/03 00:01 3 个月前
- 此快照最后确认于
- 2025/12/03 00:01 3 个月前
思路
一道水题。
不看标签都不难发现这题可以直接用栈来模拟。所谓栈,就是一种后进先出的数据结构,就好比我们吧若干个物品放在一个桶里,那么后放进去的物品肯定是先拿出来。这题也是一样,我们把一个个字母都一次放入栈中,如果发现栈顶元素与当前字母相同,那就可以直接消掉,最后再看一下栈是否为空就行啦!
代码
CPP#include<bits/stdc++.h>
using namespace std;
int ans=0;
void solve()
{
string s;cin>>s;
stack<int> stk;//这里用到的是STL里的栈,当然手写也是可以的。
//top():返回栈顶元素
//pop():弹出栈顶元素
//push(x):将x压入栈
//empty():判断栈是否为空,若为空返回true
for(char x:s)//枚举字符
{
if(!stk.empty()&&stk.top()==x) stk.pop();//如果与栈顶元素相同,弹出元素
else stk.push(x);//将当前字符压入栈中
}
if(stk.empty()) ans++;//如果栈空,则累计答案
}
int main()
{
int t;cin>>t;
while(t--) solve();
cout<<ans;
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...