买完域名怎么创建网站怎么做论坛社区网站
目录
stl:基础知识点击跳转
stack
P1739 表达式括号匹配
P1449 后缀表达式
编辑编辑
queue
P1996 约瑟夫问题
AT_abc298_d [ABC298D] Writing a Numeral
编辑编辑编辑 编辑
stl:基础知识点击跳转
stack
P1739 表达式括号匹配
#include<iostream>
#include<stack>using namespace std;int main()
{string s;cin>>s;stack<char> st;for(int i=0;i<s.size();i++){if(s[i]=='(')//入栈st.push(s[i]);if(s[i]==')'){if(st.empty())//若栈为空,表示没有与右括号匹配的左括号,直接输出NO{cout<<"NO"<<endl;return 0;}st.pop();}}if(st.empty())//若栈不为空,说明有多余的左括号cout<<"YES"<<endl;elsecout<<"NO"<<endl;return 0;}
P1449 后缀表达式
#include<iostream>
#include<stack>
#include<cstring>using namespace std;char ch;
int main()
{int s=0,x=0,y=0;stack<int> st;while(ch!='@'){ch=getchar();switch(ch){case '+':x=st.top();st.pop();y=st.top();st.pop();st.push(x+y);break;case '-':x=st.top();st.pop();y=st.top();st.pop();st.push(y-x);break;//注意:由题目知数字压入栈后对于减法一定是下面的数大于上面的,即y>x,所以要y-x而不是x-y case '*':x=st.top();st.pop();y=st.top();st.pop();st.push(x*y);break;case '/':x=st.top();st.pop();y=st.top();st.pop();st.push(y/x);break;//同上面 case '.':st.push(s);s=0;break;default:s=s*10+ch-'0';break;}}cout<<st.top()<<endl;//最后计算结果保留在栈中 return 0;
}
queue
P1996 约瑟夫问题
#include<iostream>
#include<queue>using namespace std;int main()
{int n,m;cin>>n>>m;queue<int> q;for(int i=1;i<=n;i++)q.push(i);//入队 int cnt=1;while(q.size()){int temp=q.front();q.pop();//取出队伍最前元素 if(cnt==m)//取出了 {cout<<temp<<' ';cnt=1;} else{q.push(temp);//不是需要输出的元素,将其补入队伍最末尾 cnt++;}}return 0;
}
AT_abc298_d [ABC298D] Writing a Numeral
优化方法:快速幂