题目简介
远岛子五月二十号去食堂买夜宵,她发现了令人悲戚的一幕,食堂门口排满了人,而更让人悲戚的是每当有一个人排到队伍的末尾,如果他/她前面是异性,他们就马上牵手走人了。给定一个序列,从前往后排入队伍的学生的性别,女生用 0 表示,男生用 1 表示,远岛子想要知道最终队伍的长度(假设不碰到异性不会有人离开)。
说明
由于从队尾开始,相邻的01被去除,容易想到用栈模拟。判断是否要去除可以用异或操作实现。
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
int main(){
int t, len;
scanf("%d\n", &t);
while (t--){
char a[1001];
gets(a);
len = strlen(a);
stack<char> s;
for (int i = 0; i < len; ++i){
if (s.empty()) s.push(a[i]);
else{
if (((s.top()-'0') ^ (a[i]-'0')) == 1) s.pop();
else s.push(a[i]);
}
}
printf("%d\n", s.size());
}
return 0;
}