标签:
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack <int> s;//定义栈
s.push(5);//压栈
s.push(6);
s.push(7);
s.pop(); //出栈
printf(“栈顶元素:%d\n”,s.top());
return 0;
}
头文件:
#include <queue>
using namespace std;
声明方法:
1、普通声明
queue<int>q;
2、结构体
struct node{
int x, y;
};
queue<node>q;
Stl队列的基本操作:
q.push(x) 将x压入队列的末端
q.pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
q.front() 返回第一个元素(队顶元素)
q.back() 返回最后被压入的元素(队尾元素)
q.empty() 当队列为空时,返回true
q.size() 返回队列的长度
定义满足以下规则字符串为规则序列,否则不是规则序列:
1.空序列是规则序列;
2.如果S是规则序列,那么(S),[S],{S}和< s>也是规则序列;
3.如果A和B都是规则序列,那么AB也是规则序列。
例如,下面的字符串都是规则序列:
(),[],(()),([]),()[],()[()],{{}}<>,([]<>{{}}),<<{}>>
而以下几个则不是:
(,[,],)(,()),([(),<<,{(}),<{}>)
现在,给你一些由”(“、”)”、”[“、”]”、”{“、”}”、”<”、”>”构成的字符串,请判断该字符串是否为规则序列。
第一行:一个正整数N,表示测试数据组数;
接下来N行:每行一个括号序列(长度不超过L)。
共N行:对于每一个括号序列,判断其是否规则。
规则输出TRUE,否则输出FALSE。
2
{()}<<>>
{{{{{}}}}
TRUE
FALSE
对于40%数据,有N=1,0
如果遇到左括号,入栈,如果遇到右括号,与栈顶元素比较,如果配对,栈顶元素出栈,否则失配,输出flase;
判断完成后,如果栈空正确,否则false;
#include<iostream>
#include<stack>
#include<cstring>
#include<cstdio>
using namespace std;
char str[2000001];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
stack<char>s;//定义为局部变量,每次执行函数重新定义,避免了清空
bool flag=1;
scanf("%s",str);//cin>>str;
int l;
l=strlen(str);//l=str.length();
for(int j=0;j<l;j++){
switch(str[j]){
case ‘)‘:if(!s.empty()&&s.top()==‘(‘) s.pop();else flag=0;break;//注意先判断栈是否为空再取栈顶(弹栈)!!!
case ‘>‘:if(!s.empty()&&s.top()==‘<‘) s.pop();else flag=0;break;
case ‘}‘:if(!s.empty()&&s.top()==‘{‘) s.pop();else flag=0;break;
case ‘]‘:if(!s.empty()&&s.top()==‘[‘) s.pop();else flag=0;break;
default :s.push(str[j]);break;
}
}
if(flag&&s.empty())cout<<"TRUE"<<endl;else cout<<"FALSE"<<endl;////s.empty条件 注意输出格式大小写!!!
}
return 0;
}
贝斯和奶牛们共n个队员玩k张牌,分牌时候,每轮先分给奶牛,再分给贝斯,每次将最前面的一张牌分给队员,再将这张牌后的p张牌按顺序放在最后。要求给出分完所有牌后贝斯的牌(按照从小到大排好序)。
1行,n,k,p
贝斯的牌(用回车分隔)
3 9 2
3
7
8
队列模拟
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
int q[100005],head=0,tail=0;
int main(){
int n,m,p;
cin>>n>>m>>p;
for(int i=1;i<=m;i++){
q[tail]=i;tail++;
}
int f=0;
int bs[m/n+1],l=0;
while(head!=tail){
f++;f%=n;
if(!f)bs[++l]=q[head];
head++;head%=100003;
for(int i=1;i<=p;i++){
q[tail]=q[head];tail++;tail%=100003;head++;head%=100003;
}
}
sort(bs,bs+l);
for(int i=1;i<=l;i++)cout<<bs[i]<<endl;
}
标签:
原文地址:http://blog.csdn.net/qq985141168/article/details/51346314