当前位置:首页 > 题解目录 > 正文内容

【题解】周末舞会

亿万年的星光4年前 (2021-11-20)题解目录6364

【题目描述】

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

【输入描述】

第一行两队的人数。

第二行舞曲是数目。

【输出描述】

配对情况。

【样例输入】

4 6
7

【样例输出】

1 1
2 2
3 3
4 4
1 5
2 6
3 1

【题目分析】



【参考答案】

#include<bits/stdc++.h>
using namespace std;
const int N=101;
int a[N],b[N];
int main()
{
    int m,n;
    cin>>m>>n;
    for(int i=1;i<=m;i++)
        a[i]=i;
    for(int i=1;i<=n;i++)
        b[i]=i;
 
    int k,k1=1;
    int r1=m,r2=n;
    int f1=1,f2=1;
 
    cin>>k;
    while(k1<=k)
    {
        cout<<a[f1]<<" "<<b[f2]<<endl;
 
        r1++;
        r2++;
 
        a[r1]=a[f1];
        b[r2]=b[f2];
 
        f1++;
        f2++;
 
        k1++;
    }
    return 0;
}


如果使用队列

#include <iostream>
#include <queue>
using namespace std;

int main() {
    int m, n, k;
    cin >> m >> n >> k;

    queue<int> male, female;

    // 初始化男队和女队
    for (int i = 1; i <= m; i++) {
        male.push(i);
    }
    for (int i = 1; i <= n; i++) {
        female.push(i);
    }

    // 模拟 k 首舞曲
    for (int i = 0; i < k; i++) {
        int man = male.front();
        int woman = female.front();
        male.pop();
        female.pop();

        // 输出配对
        cout << man << " " << woman << endl;

        // 重新排到队尾
        male.push(man);
        female.push(woman);
    }

    return 0;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】黑白棋子移动

【题目描述】有2n个棋子(n≥4)排成一行,开始位置为白子全部在左边,黑子全部在右边,如下图为n=5的情形:○○○○○●●●●●移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可...

【题解】舞蹈机器人

题目描述在一个拥有无限大小的二维平面的原点处,有一个舞蹈机器人,这个机器人将在这个平面上跳舞。这个机器人每次可以向自己的前方移动一个单位的长度,由于它需要在移动的过程中跳舞,因此,舞蹈机器人每移动一次...

【题解】演讲大赛评分

【题目描述】最近"老王"很开心.他在大一的时候参加过数计学院的“软件小组”。告诉你个秘密,这个小组是个好地方,不但活动精彩而且有MM。 这不,这个小组举办了一个叫做“计算...

【题解】滚动的榜单

【题目描述】某比赛的成绩,是依次出现的,而每个选手的成绩依次公布的时候,榜单都会刷新一遍,就能看到该选手在当前榜单加入时,所在的名次。下面给出了榜单选手的成绩,这里想知道,对于某个选手,求该选手在加入...

【题解】放苹果(1)

【题目描述】把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。【输入】第一行是测试数据的数目t(0≤t≤20)。以下...

字符串移位包含问题

【题目描述】对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串 s_1s1 和 s_2s2,要求判定其中一个字符串是...