整理了4道“栈的应用”
Q1:(入门)
问题 A: 程序员输入问题
时间限制: 1 Sec 内存限制: 128 MB
题目描述
【问题描述】
程序员输入程序出现差错时,可以采取以下的补救措施:按错了一个键时,可以补按一个退格符“#”,以表示前一个字符无效;发现当前一行有错,可以按一个退行符“@”,以表示“@”与前一个换行符之间的字符全部无效。
【输入格式】
输入一行字符,个数不超过 100。
【输出格式】
输出一行字符,表示实际有效字符。
【输入样例】
sdfosif@for(ii#=1,#;i<.#=8;i+++#);
【输出样例】
for(i=1;i<=8;i++);
直接上代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s[101];
stack <char> a;
stack <char> b;
gets(s);
for(int i=0;i<strlen(s);i++)
{
if(s[i]=='@')
{
while(!a.empty())
{
a.pop();
}
continue;
}
if(s[i]=='#')
{
if(!a.empty())
{
a.pop();
continue;
}
}
a.push(s[i]);
}
while(!a.empty())
{
b.push(a.top());
a.pop();
}
while(!b.empty())
{
cout<<b.top();
b.pop();
}
cout<<endl