jmu-ds-舞伴问题

1332:【例2-1】周末舞会C++ 【题目描述】 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。 【输入】 第一行两队的人数; 第二行舞曲的数目。 【输出】 配对情况。 【输入样例】 4 6 7 【输出样例】 1 1 2 2 3 3 4 4 1 5 2 6 3 1 代码: #include<bits/ 阅读详情

假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。

函数接口定义:

int QueueLen(SqQueue Q);//队列长度 
int EnQueue(SqQueue &Q, Person e);//加入队列 
int QueueEmpty(SqQueue &Q);//队列是否为空 
int DeQueue(SqQueue &Q, Person &e);//出队列 
void DancePartner(Person dancer[], int num); //配对舞伴 
  • Q:队列
  • e:参加舞会的人
  • dancer:全部舞者
  • num:参加舞会的人数

###输入说明 先输入参加舞会人数,再分别输入参加舞会人的姓名和性别 ###输出说明 先输出配对的男女舞伴,若队伍有剩人,则输出剩下人性别及剩下人数目。

裁判测试程序样例:

#include<iostream>
#define MAXQSIZE 100//队列可能达到的最大长度
#define OK 1
#define ERROR 0
#define OVERFLOW -2
using namespace std;
typedef struct {
    char name[20]; //姓名
    char sex; //性别,'F'表示女性,'M'表示男性
} Person;
//- - - - - 队列的顺序存储结构- - - - - 
typedef struct {
    Person data[MAXQSIZE]; 
    int front; //头指针
    int rear; //尾指针
} Queue;
typedef Queue *SqQueue;
SqQueue Mdancers, Fdancers; //分别存放男士和女士入队者队列
int InitQueue(SqQueue &Q);
void DestroyQueue(SqQueue &q);
int QueueLen(SqQueue Q);//队列长度 
int EnQueue(SqQueue &Q, Person e);//加入队列 
int QueueEmpty(SqQueue &Q);//队列是否为空 
int DeQueue(SqQueue &Q, Person &e);//出队列 
void DancePartner(Person dancer[], int num); //配对舞伴 
int main(){
    int i;
    int n;
    Person dancer[MAXQSIZE];
    cin>>n;
    for(i=0;i<n;i++) cin>> dancer[i].name >> dancer[i].sex;
    InitQueue(Mdancers); //男士队列初始化
    InitQueue(Fdancers); //女士队列初始化
    cout << "The dancing partners are:" << endl;
    DancePartner(dancer, n);
    if (!QueueEmpty(Fdancers)) { 
        cout << "F:"<<QueueLen(Fdancers) ;
    } else if (!QueueEmpty(Mdancers)) { 
        cout << "M:"<<QueueLen(Mdancers) ;
    }
    DestroyQueue(Fdancers);
    DestroyQueue(Mdancers);
    return 0;
}
int InitQueue(SqQueue &Q) {//构造一个空队列Q
    Q = new Queue; //为队列分配一个最大容量为MAXSIZE的数组空间
    if (!Q->data)
        exit( OVERFLOW); //存储分配失败
    Q->front = Q->rear = 0; //头指针和尾指针置为零,队列为空
    return OK;
}
void DestroyQueue(SqQueue &q)
{
    delete q;
}
/* 请在这里填写答案 */

输入样例:

6
张1 F
林1 F
王2 M
李1 F
薛2 M
翁1 F结尾无空行

输出样例:

The dancing partners are:
张1  王2
林1  薛2
F:2结尾无空行

Answer

//队列长度
int QueueLen(SqQueue Q) {
	return ((Q->rear-Q->front+MAXQSIZE)%MAXQSIZE);
}; 
//加入队列 
int EnQueue(SqQueue &Q, Person e) {
	if((Q->rear+1)%MAXQSIZE==Q->front)//队满 
		return OVERFLOW;
	Q->data[Q->rear] = e;
	Q->rear = (Q->rear+1)%MAXQSIZE;//当假上溢时会尾指针就会指向0,循环起来 
	return OK;
};
//队列是否为空
int QueueEmpty(SqQueue &Q) {
	if(Q->front == Q->rear)
		return  OK;
	else
		return ERROR;
};
//出队列  
int DeQueue(SqQueue &Q, Person &e) {
	if(Q->rear==Q->front)//队空 
		return false;
	e = Q->data[Q->front];//保存队头元素
	Q->front = (Q->front+1)%MAXQSIZE;//队头指针+1
	return OK; 
};
//配对舞伴
void DancePartner(Person dancer[], int num) {
	for(int i = 0;i < num;i++) {
		if(dancer[i].sex == 'F'){
			EnQueue(Fdancers, dancer[i]); 
		}
		if(dancer[i].sex == 'M'){
			EnQueue(Mdancers, dancer[i]); 
		}
	}
	//循环num遍,根据性别将所有舞者分别压入女舞者栈和男舞者栈		
	while(!QueueEmpty(Fdancers) && !QueueEmpty(Mdancers)) {
		Person p;
		DeQueue(Fdancers, p);
		cout << p.name << "  ";
		DeQueue(Mdancers, p);
		cout << p.name << "\n"; 
	}
	//当男舞者和女舞者栈都不为空的时候,各出栈一个女舞者和男舞者,并输出他们的名字 
};
舞伴问题(**) 代码及报告 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 【实验提示】 先入队的男士或女士亦先出队配成舞伴。因此该问题具体有典型的先进先出特性,可用队列作为算法的数据结构。在算法中,假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队仍有等待配对者,算法输出此队列中等待者的人数及排在队头的等待者的名字,他(或她)将是下一轮舞曲开始时第一个可获得舞伴的人。 【实验要求】 利用队列实现,存储结构采用顺序或链式均可 立即下载

相关推荐

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 402

6-3 jmu-ds-舞伴问题 (20分) PTA 函数题

假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。 函数接口定义: int QueueLen(SqQueue Q);//队列长度 int EnQueue(SqQueue &Q, Person e);//加入队列 int QueueEmpty(SqQueue &Q);//队列是否为空

qq_40468936的博客 4079

Mplus实战:随机截距交叉滞后模型(RI-CLPM)在心理学纵向研究中的进阶应用

本文深入探讨了随机截距交叉滞后模型(RI-CLPM)在心理学纵向研究中的进阶应用,通过Mplus实战演示了模型设定、结果解读及进阶建模策略。RI-CLPM能有效区分个体间差异和个体内变化,适用于追踪青少年手机使用与抑郁症状等研究。文章还提供了样本量规划、模型比较和结果可视化等实用技巧,助力研究者避免常见陷阱。

weixin_29220405的博客 369

题解——舞伴问题

题解——舞伴问题 题目链接:传送门 描述 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。 输入 第一行男士人数m和女士人数n; 第二行舞曲的数目k。 输出 共k行,每行两个数,表示配对舞伴的序号,男士在前,女士在后。 样例输入 4 3 6 样例输出 1 1 2 2 3 3 4 1 1 2 2 3 题解 题意 这

cuc_pyx技术小站 3479

手把手教你自制Type-C OTG转换器(附电路图及避坑指南)

本文详细指导如何自制Type-C OTG转换器,包括核心电路设计、元器件选型及焊接技巧,特别强调硬件检测电路的关键作用。通过实测数据和避坑指南,帮助开发者解决兼容性问题,实现高效数据传输。

weixin_27038245的博客 712

UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。

MarcoPro的博客 1632

PTA: jmu-ds-舞伴问题

/队列长度//加入队列//队列是否为空//出队列//配对舞伴Q:队列e:参加舞会的人dancer:全部舞者num:参加舞会的人数###输入说明先输入参加舞会人数,再分别输入参加舞会人的姓名和性别###输出说明先输出配对的男女舞伴,若队伍有剩人,则输出剩下人性别及剩下人数目。1)普通队列存在 “假溢出” 问题:普通队列使用数组存储元素,通过头指针 front 和尾指针 rear 来标记队列的首尾位置。在入队操作时,rear 指针向后移动;出队操作时,front 指针向后移动。

ly1012_的博客 1241

即梦 AI 全功能零基础详细教程(纯技术版)

即梦 AI 是一款多模态 AI 生成工具,主打文本生成视频、图片生成视频、角色一致性生成、音画同步等核心功能,依托自研 AI 视觉模型,实现从文本 / 图片 / 音频素材输入,到高清视频、图像内容输出的全流程 AI 创作,支持短视频、短剧、创意素材等多场景创作,具备操作门槛低、生成效率高、画面可控性强的技术特点。@为工具内置引用指令,作用是锁定指定素材 / 角色,强制 AI 按照该素材的核心特征生成内容,无额外付费、解锁要求,免费使用。剧本拆分:将短剧拆分为单镜头(15 秒内 / 个)

2501_92061023的博客 5800

PTA jmu-ds-舞伴问题 (20分)

PTA jmu-ds-舞伴问题 (20分) 假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。 函数接口定义: int QueueLen(SqQueue Q);//队列长度 int EnQueue(SqQueue &Q, Person e);//加入队列 int QueueEmpty(SqQu

Eli_Code 5224

2、MOSFET基本物理效应及其BSIM4模型解析

本文深入探讨了MOSFET的基本物理效应及其在BSIM4模型中的数学表述,涵盖门和沟道的几何结构、温度依赖性、材料模型选项、阈值电压计算、以及其他关键物理效应如LDD电阻、有限电荷厚度、有效迁移率等。同时解析了机械应力、邻近效应及布局依赖效应对MOSFET性能的影响,并通过参数表和建模流程提供了精确建模的指导,旨在帮助读者优化MOSFET器件性能与可靠性。

purple的博客 564

BW 技术 InfoObject 初始化,一次把 0LANGU、0CURRENCY、0IOBJNM 这些底座对象讲透

摘要:BW/4HANA和S/4HANA嵌入式分析中最容易被忽视的关键技术InfoObject(如0LANGU、0UNIT等)是系统运行的基础骨架。这些对象虽不直接涉及业务,但若未正确激活会导致多维分析、查询运行等核心功能异常。BW/4HANA中应通过任务清单SAP_BW4_SETUP_SIMPLE或SAP_BW4_SET_OPERATION_SCOPE激活,而非旧事务码RSTCO_ADMIN。S/4HANA嵌入式分析仍需依赖这些底层BW组件,配置需参考SAP Note 2636754。项目实践中需特别关注这

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1383

舞伴配对问题 c语言编程,求助jmu-ds-舞伴问题

该楼层疑似违规已被系统折叠隐藏此楼查看此楼假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。函数接口定义:int QueueLen(SqQueue Q);//队列长度 int EnQueue(...

weixin_39837727的博客 403

【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?

使用绘图 工具条上的新建圆工具 可创建一个椭圆,使其包含要在该数据框中显示的数据范围。. 在基础工具工具条上单击选择元素工具 ,然后选择圆形。. 在内容列表中右键单击要裁剪的数据框,然后单击属性。. 单击裁剪选项下拉菜单,然后选择裁剪至形状。. 单击数据框属性 对话框中的数据框选项卡。还可以更改裁剪形状轮廓的边框选项。打开软件,添加配套实验数据包中。修改椭圆的属性,使其透明。. 单击所选图形的轮廓。. 单击指定形状按钮。

智慧空间实验室 952

6-3 jmu-ds-舞伴问题分数 20作者 linli单位 集美大学[PTA]

/队列长度//加入队列//队列是否为空//出队列//配对舞伴Q:队列e:参加舞会的人dancer:全部舞者num:参加舞会的人数###输入说明先输入参加舞会人数,再分别输入参加舞会人的姓名和性别###输出说明先输出配对的男女舞伴,若队伍有剩人,则输出剩下人性别及剩下人数目。

q123456to的博客 839

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

DS博客作业03--栈和队列

1.本周学习总结 栈是一种只能在一端进行插入或删除操作的线性表,特点是“后进先出”;而队列只允许在表的一端进行插入操作,在表的另一端进行删除操作,特点是“先进先出”。 这几周学习了栈和队列,相比较之前的链表学习,这章的内容相对于链表的学习较易于理解。平时做作业的时候觉得自己掌握的差不多了,但是通过这次的考试,发现自己在栈和队列这部分掌握的其实还差很多,在一些条件的判断上还需要更加谨慎鸭,还需要...

weixin_33699914的博客 111

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

舞伴配对问题java_数据结构--队列实现舞伴配对问题+(舞伴程序++c++).doc

#include#include const bool TURE=1;const bool FAULT=0;using std::cout;using std::cin;using std::endl;class Node{//链式堆栈的节点类public:Node();//构造函数重载1Node(int , int , int ,Node *);//构造函数重载2void const get_d...

weixin_31096417的博客 483

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

结构体链表(1011: 周末舞会)

题目描述 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。 输入 输入共一行,包含三个数,N,M,K,分别代表男生,女生,舞曲数目,大小均小于100. 输出 输出共K行,每行两个数,表

steven_cnyali的博客 926

第二章编程题

6-1 顺序表创建和就地逆置 (10 分) //库函数头文件包含 #include<stdio.h> #include<malloc.h> #include<stdlib.h> //函数状态码定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR ...

张一 558

ds第三章栈和队列

其中L和e都是用户传入的参数。L是da带头结点的头指针;e是数据元素。其中LinkList#define MaxSize 100 /* 栈最大容量 */int top;/* 栈顶指针 *//* 顺序栈 *//*判栈是否为空,空返回true,非空返回false *//* 元素x入栈 *//* 取栈顶元素 *//* 删除栈顶元素 */void Pop();//队列长度//加入队列//队列是否为空//出队列//配对舞伴Q:队列e:参加舞会的人dancer:全部舞者。

2301_80384978的博客 2061
上一篇: 十进制转二进制(顺序栈设计和应用)
下一篇: 简单的猜数字游戏[1]
Sancean
博客等级 码龄6年 2472粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值