[xdoj] 1310 DSKer的卡牌游戏
2018-05-27 01:08 legend聪 阅读(201) 评论(0) 编辑 收藏 举报http://acm.xidian.edu.cn/problem.php?id=1310
1. 这道题可以类比括号匹配,YY和yy是两组可以匹配的信号,当然要注意逻辑是否正确,一开始进行括号匹配算法的时候逻辑出了问题,导致卡在for循环里面出不来结果,这种时候不要只盯着代码看,拿着样例代入一下就知道哪里有写的不严密的地方。
#include <bits/stdc++.h> using namespace std; int main() { string str; stack<char>s; stack<char>a; while (cin >> str) { int i; s.push(str[0]); for (i = 1; i<str.length(); i++) { if (str[i]== 'Y') { if (s.empty()) s.push(str[i]); else if (s.top() == 'Y') { s.pop(); } else s.push(str[i]); } else if (str[i] == 'y') { if (s.empty()) { s.push(str[i]); } else if (s.top() == 'y') { s.pop(); if (s.empty()) { s.push('Y'); } else if (s.top() == 'Y') { s.pop(); } else s.push('Y'); } else s.push(str[i]); } } while (!s.empty()) { a.push(s.top()); s.pop(); } while (!a.empty()) { printf("%c", a.top()); a.pop(); } printf("\n"); } }