程序设计思维与实践 Week10 限时大模拟 (3/4/数据班)

程序设计思维与实践 Week10 限时大模拟 (3/4/数据班)

A - 签到题

问题分析

根据题面,执行的操作次数在1E1000级别,隐含的意思是把全部的ST删除
因此,不考虑执行次数,设计程序从左到右删除所有的ST即可。原字符串存到string后,遍历这个string,最终结果储存到一个栈结构中。栈空取元素入栈,不空,若栈顶是S,字符串位置是T,则弹出栈顶,继续操作。

#include<bits/stdc++.h>
using namespace std;
char c[200000+5];
int main()
{
//	gets(c);
	scanf("%s",c);
	int len=strlen(c);
	stack<char>ans;
	for(int i=0;i<len;++i){
		if(ans.empty()){
			ans.push(c[i]);
			continue;
		}
		if(ans.top()=='S'&&c[i]=='T'){
			ans.pop();
		}
		else{
			ans.push(c[i]);
		}
	}
	cout<<ans.size()<<endl;
	return 0;
 } 

B - 东东转魔方

这个题参考了别人的解法,就不在这里写了

参考资料链接

原文地址:https://www.cnblogs.com/master-cn/p/12898935.html