您的位置:首页 > 其它

NOIP 2017 Day1 题2: 时间复杂度 栈

2017-12-18 23:21 295 查看
#include <bits/stdc++.h>
using namespace std;
bool used[128];
stack<char> s;

int getResult(string ss){

if(ss[2]=='1') return 0;
else return( ss[4]-'0'  );;

}

string solve(){
while(!s.empty()) s.pop();
memset(used , false, sizeof(used));

int  L; cin>> L;
int ans=0;
int his_ans=0;
int mm=0;
string ss; cin>>ss;
his_ans = getResult(ss);

for(int i=1;i<=L; i++){
char EF; cin >>EF;
if(EF=='F'){
char  v;cin>>v; //不能用int 不用用i变量
if( used[(int)v]==true) return "ERR";  else used[(int)v]=true;
string x,y; cin>>x>>y;  //刚开始用char 当 样例中为10时候,不通过
if(   y=="n" ) {  s.push('F');}
if(   x=="n" )  s.push('f');  //怎么办

}
else if(EF=='E'){

if( !s.empty() && s.top()=='F' ) {s.pop(); ans++;}
if( !s.empty() && s.top()=='f' ) { s.pop();  ans=0;}
//else s.push('E');   //这里错了

}

if(s.empty()){ mm = max( mm,ans); ans=0;}

}

if(!s.empty()) return "ERR";
if( mm == his_ans) return "Yes";
else  return "No";
return "UNKOWn";

}

int main()
{
int t;cin>>t;
while(t--){

cout << solve()<<endl;

}

return 0;
}
  通过了三组数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: