wzoi.cc画拱桥AC代码

介绍

在说题目之前,我们介绍一下栈:

栈类似数组,其实可以用数组解决,但是栈也有独特的地方:

栈的缺点:

无法像:a[9],a[i]这样查看!所以前面说栈只是类似数组!

优点:

可以直接操作,如:q.push、q.pop等等

我们接下来用栈做到题目吧!

题目描述:

小明最近的作业是写一篇文章。然而,他发现写作真的很无聊,两个小时过后,他发现他所写的是N个由字母‘A’和‘B’组成的单词。他接受现实了:无法按时完成作业。于是小明开始找点乐子。

小明通过在单词上方绘制拱桥来连接成对相同的两个字母(即A与A,B与B)。如果一个单词中,每个字母都可以通过拱桥连接到另一个字母,且任意两个拱桥都不相交,则认为该单词是完美的。

任务要求:请帮助小明计算最多有多少个单词是完美的。

输入格式:

第1行输入一个正整数N,表示Mirko写下的单词数量;

第2到第N+1行,第i+1行包含一个单词Si,仅由字母A和B组成;

输出格式:

输出共一行一个整数,即最多有多少个完美单词的数量。

样例输入:
样例1
3
ABAB
AABB
ABBA

样例2
3
AAA
AA
AB

样例3
1
ABBABB
样例输出:
样例1
2

样例2
1

样例3
1
提示:

【数据规模】

对于20%的数据: 1≤N≤20;

对于100%的数据:1≤N≤100;|Si|≤100,000; 

时间限制: 1000ms
空间限制: 256MB

解析:

直接上代码!

#include<bits/stdc++.h>
using namespace std;
string s;
stack<char>st;
int main()
{
	int n,sum=0;
	cin>>n;
	while(n--){
		cin>>s;
		for(int i=0;i<s.length();i++){
			if(!st.empty()&&st.top()==s[i]){
				st.pop();
			}
			else{
				st.push(s[i]);
			}
		}
		if(st.empty()){
			sum++;
		}
		while(!st.empty())st.pop();
	}
	cout<<sum;
	return 0;
}

OK,今天就到这里啦! 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值