您的位置:首页 > 产品设计 > UI/UE

priority_queue&queue使用实例

2016-05-25 17:26 363 查看
priority_queue:

合并果子

#include<bits/stdc++.h>
//有些OJ&版本不兼容,需使用iostream&queue
using namespace std;
int n,a,i,k,s;
int main(){
priority_queue<int, vector<int>, greater<int> >q;//定义小根堆
cin>>n;
for(i=1;i<=n;i++){
cin>>a;
q.push(a);//将a放入q
}
while(q.size()!=1){//如果q的元素大于1,继续
k=q.top();//k赋为q的顶端元素
q.pop();//弹出q的顶端元素
k+=q.top();
q.pop();
s+=k;//将s加上顶端两个的和
q.push(k);//k放回q
}
cout<<s;
return 0;
}


priority_queue常用的函数:

top:读入顶端元素

pop:删除顶端元素

size:返回元素个数

push:加入一个元素

empty:如果为空,返回true

queue:

约瑟夫问题

#include<bits/stdc++.h>
using namespace std;
int n,m,i,k;
int main(){
queue<int>q;
cin>>n>>m;
for(i=1;i<=n;i++)
q.push(i);//将编号为i的定为i
while(!q.empty()){//不为空继续
for(i=1;i<m;i++){
q.push(q.front());//把头复制到尾
q.pop();//弹出头
}
cout<<q.front()<<' ';
q.pop();//出队
}
return 0;
}


至于队列的常用函数,大概是:

front:读入队头

back:读入队尾

pop:删除队头

empty、size、push:同priority_queue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: