1332:【例2-1】周末舞会

文章提供了三个C++代码示例,解决了一个模拟周末舞会男女配对问题,利用队列数据结构实现。程序描述了当男士和女士排队,每次舞蹈后重新回到队尾的过程,并给出了不同实现方式,包括基础数组操作和STL队列的应用。此外,还提及了信息学奥赛的假期集训和相关书籍推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1332:【例2-1】周末舞会

信息学奥赛一本通(C++版)在线评测系统


【例1】假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。

跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。

规定每个舞曲能有一对跳舞者。若两队初始人数不相同,

则较长的那一队中未配对者等待下一轮舞曲。

现要求写一个程序,模拟上述舞伴配对问题。

输入:第一行两队的人数

     第二行舞曲的数目

【分析】:设计两个队列分别存放男士和女士。

每对跳舞的人一旦跳完后就回到队尾等待下次被选。

如 m=4  n=3  k=6

参考:

一本通 第三部分 数据结构 第二章 队列 1332 :【例2-1】周末舞会 - 内存网

一本通——1332:【例2-1】周末舞会 题解 - 陈晋衍 的博客 - 洛谷博客

1332:【例2-1】周末舞会_weixin_30550271的博客-CSDN博客

https://www.cnblogs.com/lbssxz/p/10740515.html

1332:【例2-1】周末舞会_PX-C的博客-CSDN博客

周末舞会(信息学奥赛一本通-T1332)_Alex_McAvoy的博客-CSDN博客




C++参考代码一:

#include<cstdio>
#include<iostream>
using namespace std;
int  a[10001],b[10001],k1=1,k,i,f1=1,r1,f2=1,r2;
/*
【输入样例】
4 6
7
【输出样例】
1 1
2 2
3 3
4 4
1 5
2 6
3 1
*/ 
int main( void )
{
	int m,n;
	
	//输入
	//第一行两队的人数;
    //第二行舞曲的数目。
	cin>>m>>n;
	cin>>k;
	
	for (i=1;i<=m;i++) a[i]=i;
	for (i=1;i<=n;i++) b[i]=i;
	
	r1=m; 
	r2=n;
	while (k1<=k)
	{ 
		printf("%d %d\n",a[f1],b[f2]);
		
		//第一次a[m+1]=a[1]=1,第二次a[m+2]=a[2]=2,如此循环
		//将a[f1]出队,并且入队 
		r1++; 
		a[r1]=a[f1]; 
		f1++;//出队  
		
		//第一次b[n+1]=b[1]=1,第二次b[n+2]=b[2]=2,如此循环。
		//b[f2]入队 
		r2++; 
		b[r2]=b[f2]; 
		f2++;//出队    
		
		//记录舞曲数 
		k1++;
	}
	
	return 0;
}
/*
【输入样例】
4 6
7

【输出样例】
1 1
2 2
3 3
4 4
1 5
2 6
3 1

作业:将此例题用STL的队列重写 
*/ 

C++参考代码二:

#include<iostream>
using namespace std;
int main( void )
{
    long long n,m,k;
    
    //输入
	//第一行两队的人数;
    //第二行舞曲的数目。
    cin>>n>>m>>k;
    
    //枚举每一対
	for(int i=0;i<k;i++)
    {
        //输出
		cout<<i%n+1<<" "<<i%m+1<<endl;
    }
    
    //完美结束
    return 0;
}
/*
【输入样例】
4 6
7

【输出样例】
1 1
2 2
3 3
4 4
1 5
2 6
3 1
*/

C++参考代码三:

#include<iostream>
using namespace std;
int main( void )
{
    int a,b,c,n=1,m=1;
    cin>>a>>b>>c;
    
	for(int i=1;i<=c;i++)
    {
        if(n==a+1)
            n=1;
        
		if(m==b+1)
            m=1;
        
		cout<<n++<<' '<<m++<<endl;
    }
    
	return 0;
}








信息学奥赛寒假、暑假、国庆十一假期 如何进行集训

信息学奥赛寒假、暑假、国庆十一假期 如何进行集训_dllglvzhenfeng的博客-CSDN博客

信奥书籍推荐之数学篇(2023.02.09)

信奥书籍推荐之数学篇(2023.02.09)_dllglvzhenfeng的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值