专栏文章

题解: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 条评论,欢迎与作者交流。

正在加载评论...