糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 队列Java舞会_stl之队列(舞会) - osc_706v6usl的个人空间 - OSCHINA - 中文开源技术交流社区...

队列Java舞会_stl之队列(舞会) - osc_706v6usl的个人空间 - OSCHINA - 中文开源技术交流社区...

时间:2023-10-09 18:27:58

相关推荐

队列Java舞会_stl之队列(舞会) - osc_706v6usl的个人空间 - OSCHINA - 中文开源技术交流社区...

蒟蒻第一次发题解,有不足的还希望大牛指出。

【冬令营队列】舞会

题目描述

假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴,每跳完一曲即回各自队尾继续等待。规定每个舞曲只能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。

输入

第一行男士人数m和女士人数n(m <= 1000, n <= 1000);

第二行舞曲的数目k(k <= 1000)。

样例

输入:

2 4

6

输出:

1 1

2 2

1 3

2 4

1 1

2 2

这是一道非常基本的队列问题。

什么叫做队列?

举个栗子:就像去食堂打饭,先去的人总会是先打完,也是先出来的。(除了插队以外QAQ)

总结:队列特点:先进先出。

队列的好处

虽然可以用数组来模拟,但是队列的简洁程度比数组高。

效率也比数组高一点点。

队列的用法

定义一个队列queueq;放入队列:q.push();查看队首q.front();队尾:q.back();弹出:q.pop();

q.empty()=q.size()==0.

那么这道题就非常简单了。只需要输出在2个队列里,在次数以内的每一个队首的值即可。但是不要忘了更新和弹出。

上代码:

code:

这是队列的写法。

#include

using namespace std;

queueq1,q2;

int main(){

int n,m,k;

cin>>n>>m>>k;

for(int i=1;i<=n;i++){

q1.push(i);

}

for(int i=1;i<=m;i++){

q2.push(i);

}

for(int i=1;i<=k;i++){

cout<

q1.push(q1.front());

q1.pop();

q2.push(q2.front());

q2.pop();

}

return 0;

}

这是数组的写法。​​​​​​​

#include

using namespace std;

int m,n,k,a=1,b=1;

int main(){

cin>>m>>n>>k;

for(int i=1;i<=k;i++){

cout<

++a;

++b;

if(am+1) a=1;

if(b

n+1) b=1;

}

return 0;

}

如果觉得《队列Java舞会_stl之队列(舞会) - osc_706v6usl的个人空间 - OSCHINA - 中文开源技术交流社区...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。