算法第四版- 1.3 背包、队列和栈
1.3的课后习题节选
1.3.4平衡括号
也是lc第20题,平衡的括号,用栈做,很easy
class Solution {
public:
stack<char>st;
bool isValid(string s) {
for ( int i=0;i<s.length();i++) {
if(s[i]=='(' || s[i]=='{' || s[i]=='[') {
st.push(s[i]);
}
else {
if(st.empty())
return false;
if(s[i]==')') {
if(st.top()!='(')
return false;
else
st.pop();
}
else if(s[i]=='}') {
if(st.top()!='{')
return false;
else
st.pop();
}
else {
if(st.top()!='[')
return false;
else
st.pop();
}
}
}
if(st.empty())
return true;
else
return false;
}
};
1.3.37 Jpsephus问题
题目:N个人,报数,报到M的人会被杀死,依次类推,直到全死。
方法:队列
void Josephus(int N, int M)
{
queue<int> q1;
for (int i = 0; i < N; i++) q1.push(i);
while (!q1.empty())
{
for (int i = 0; i < M - 1; i++)
{
q1.push(q1.front());
q1.pop();
}
cout << q1.front() << " ";
q1.pop();
}
}