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

【题解】周末舞会

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

【题目描述】

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

【输入描述】

第一行两队的人数。

第二行舞曲是数目。

【输出描述】

配对情况。

【样例输入】

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;
}


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

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

分享给朋友:

相关文章

【题解】跳格子

【题目描述】地面上有一排长度为n的格子1-n,每个格子上都有一个数xi,开始时你在位置0,每次你可以向前跳1-2格,然后取走格子上的数,直到跳到位置n+1。取走的数的和就是你的得分,现在你想知道你可能...

2021年市北区程序设计竞赛题(⼩学组)

最⼤值的相乘(maxx.cpp)【问题描述】第⼀⾏有x个正整数a1,a2,..,ax,第⼆⾏有y个正整数b1,b2,...,by,第三⾏有z个正整数c1,c2,...,cz,假设第⼀⾏的x个正整数中的...

【题解】奇偶校验

【题目描述】奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数 是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。现在给...

【题解】放苹果(2)

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

【题解】统计自然数

【题目描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出...

【题解】区间数位个数

2.区间数位个数(digit.cpp)【描述】给定整数n和整数k,求出1~n中所有数的每一位数字中,出现数字k的次数。【输入】第一行是两个个整数n和k【输出】一个整数表示答案。【样例输入输出】ligh...