目录
小鱼的数字游戏
P1427 小鱼的数字游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
表达式括号匹配
P1739 表达式括号匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
【模板】栈
B3614 【模板】栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
小鱼的数字游戏
P1427 小鱼的数字游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:模拟+stl的stack
关于stack的操作:
std::stack<type> s :定义一个type类型的栈
s.push(x) :把x放入栈中
s.top() :取出栈顶元素,但不删除
s.pop() :删除栈顶元素
s.size() :返回栈中元素的数量
s.empty() :判断栈中是否为空(栈不空:while(!s.empty()) )
完整代码:
#include <bits/stdc++.h>
#define int long long
signed main() {int t;std::stack<int> s;while (std::cin >> t) {if (t == 0)break;else {s.push(t);}}while (!s.empty()) {std::cout << s.top() << " ";s.pop();}return 0;
}
表达式括号匹配
P1739 表达式括号匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:模拟+stl的stack
遇到左括号就进栈,遇到右括号并且栈不空的时候,栈顶元素出栈
完整代码:
#include <bits/stdc++.h>
#define int long long
signed main() {std::stack<char> st;std::string s;std::cin >> s;int n = s.length();s = " " + s;int flag = 0;for (int i = 1; i <= n; i++) {if (s[i] == '(') {st.push(s[i]);} else if (s[i] == ')' && st.size() != 0) {st.pop();} else if (s[i] == ')' && st.size() == 0) {flag = 1;} else if (s[i] == '@') {break;} elsecontinue;}//std::cout<<flag;if (st.empty() && flag == 0) {std::cout << "YES\n";} else {std::cout << "NO\n";}return 0;
}
【模板】栈
B3614 【模板】栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:模拟+stl的栈
注意:题目中数据输入比较大,可以用字符串来存需要输入的数
完整代码:
#include <bits/stdc++.h>
#define int long long
signed main() {int t;std::cin >> t;while (t--) {int n;std::cin >> n;std::stack<std::string> st;std::string s, x;for (int i = 1; i <= n; i++) {std::cin >> s;if (s == "push") {std::cin >> x;st.push(x);}if (s == "query") {if (st.size() == 0) {std::cout << "Anguei!\n";} else {std::cout << st.top() << "\n";}}if (s == "pop") {if (st.empty()) {std::cout << "Empty\n";} else {st.pop();}}if (s == "size") {std::cout << st.size() << "\n";}}}return 0;
}