当前位置: 首页 > news >正文

PTA 6-4 配对问题

许多大学生报名参与大运会志愿者工作。其中运动场引导员需要男女生组队,每组一名男生加一名女生,男生和女生各自排成一队,依次从男队和女队队头各出一人配成小组,若两队初始人数不同,则较长那一队未配对者调到其他志愿者队。现要求写一算法模拟上述配对问题,你需要用队列操作实现上述算法。

函数接口定义:

Status EnQueue(SqQueue &Q,QElemType e);//入队
Status DeQueue(SqQueue &Q,QElemType &e);//出队
void Partner( int num);//男女配对

其中 Q 代表队列, e代表出队或入队的元素; num为志愿者总人数。

裁判测试程序样例:

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<iostream>
#include<string>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
#define MAX_QSIZE 5typedef struct {char name[20];char sex;
} QElemType;
typedef int Status;
typedef  struct
{  QElemType  *base;int   front;int   rear;
}SqQueue;SqQueue Mdancers, Fdancers; //分别存放男士和女士入队者队列Status InitQueue(SqQueue &Q){ /* 构造一个空队列Q */Q.base=(QElemType  *)malloc(MAX_QSIZE*sizeof(QElemType));if(Q.base==NULL) return OVERFLOW;Q.front=Q.rear=0;return OK;}Status EnQueue(SqQueue &Q,QElemType e)//入队{ /* 插入元素e为Q的新的队尾元素 *///请补充完整return OK;}Status DeQueue(SqQueue &Q,QElemType &e)//出队{ /* 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR *///请补充完整return OK;}Status QueueEmpty(SqQueue Q)//判断队空{ /* 若队列Q为空队列,则返回TRUE;否则返回FALSE */if(Q.front==Q.rear) /* 队列空的标志 */return TRUE;elsereturn FALSE;}void Partner( int num) {//num是志愿者总人数InitQueue(Mdancers); //男生队列初始化InitQueue(Fdancers); //女生队列初始化QElemType p;for (int i = 0; i < num; i++) //依次将志愿者根据其性别入队{cin>>p.name >>p.sex;if (p.sex == 'F')______________________; //插入女队elseEnQueue(Mdancers, p); //插入男队}if(QueueEmpty(Fdancers)||QueueEmpty(Mdancers))cout << "配对失败!" << endl;else{    cout << "配对成功小组:" << endl;while (!QueueEmpty(Fdancers) && !QueueEmpty(Mdancers)) {//依次输出男女志愿者的姓名_____________________________; //女生出队cout << p.name << "  "; //输出出队女生姓名____________________________; //男生出队cout << p.name << endl; //输出出队男生姓名}
}
}int main()
{int num;cin>> num;Partner(num);return 0;
}

输入样例:

6
张三 M
李四 F
王五 F
李欣 M
钟中 M
萝莉 M

输出样例:

配对成功小组:
李四  张三
王五  李欣

答案:

#include <cstring>
Status EnQueue(SqQueue &Q, QElemType e) 
{if ((Q.rear + 1) % MAX_QSIZE == Q.front) return ERROR; // 队列满strcpy(Q.base[Q.rear].name,e.name);(Q.base[Q.rear]).sex=e.sex;Q.rear = (Q.rear + 1) % MAX_QSIZE;return OK;
}Status DeQueue(SqQueue &Q, QElemType &e) 
{if (Q.front == Q.rear) return ERROR; // 队列为空e = Q.base[Q.front];Q.front = (Q.front + 1) % MAX_QSIZE;return OK;
}
void Partner(int num) 
{InitQueue(Mdancers); // 男生队列初始化InitQueue(Fdancers); // 女生队列初始化QElemType p;for (int i = 0; i < num; i++) {//cin >> p.name >> p.sex;scanf("%s %c",p.name,&(p.sex));if (p.sex == 'F')EnQueue(Fdancers, p); // 插入女队elseEnQueue(Mdancers, p); // 插入男队}if (QueueEmpty(Fdancers) || QueueEmpty(Mdancers))cout << "配对失败!" << endl;else {cout << "配对成功小组:" << endl;while (!QueueEmpty(Fdancers) && !QueueEmpty(Mdancers)) { // 依次输出男女志愿者的姓名DeQueue(Fdancers, p); // 女生出队printf("%s  ",p.name);//cout << p.name << "  ";DeQueue(Mdancers, p); // 男生出队cout << p.name << endl;}}
}

注意事项:

1.我是用了kimi帮我改正了一下。
2.这里由于是学完c语言再写的,没学c++,所以会显得有点混。
3.出错的主要地方是判空,判满,指针的移动,scanf的格式(注意两个输入之间要有空格)。

相关文章:

PTA 6-4 配对问题

许多大学生报名参与大运会志愿者工作。其中运动场引导员需要男女生组队&#xff0c;每组一名男生加一名女生&#xff0c;男生和女生各自排成一队&#xff0c;依次从男队和女队队头各出一人配成小组&#xff0c;若两队初始人数不同&#xff0c;则较长那一队未配对者调到其他志愿…...

sklearn基础教程

scikit-learn是一个用于机器学习的Python库&#xff0c;提供了多种机器学习的方法和模型&#xff0c;以及数据预处理、特征选择、模型评估等功能。它简化了机器学习流程&#xff0c;并且具有易于使用和灵活的特点。 本教程将介绍sklearn的基础知识和常用功能&#xff0c;帮助你…...

MySQL入门学习-查询进阶.别名

别名&#xff08;Alias&#xff09;是为数据库中的表、列或表达式赋予的一个临时名称。使用别名可以使查询结果更具可读性&#xff0c;并且在复杂的查询中更方便地引用和处理数据。 在 MySQL 中&#xff0c;别名可以通过 AS 关键字来定义&#xff0c;例如&#xff1a; SELECT…...

【Rust日报】嵌入式 Rust:一份简化指南

EvilHelix 编辑器 EvilHelix 是一个采用 Vim 风格的模态编辑器&#xff0c;旨在提供快速且高效的编辑体验。它是 Helix 编辑器的一个分支&#xff0c;增加了 Vim binding&#xff0c;同时积极同步上游的特性&#xff0c;兼备了 Vim 和 Hexli 的优点&#xff1a; Vim 风格的模态…...

Web课外练习9

<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>邮购商品业务</title><!-- 引入vue.js --><script src"./js/vue.global.js" type"text/javascript"></script><link rel&…...

rtsp协议分析

rtsp (real-time stream protocol)实时流媒体控制协议 属于基于文本的应用层协议&#xff0c;rtsp的底层协议可以是udp也可以是tcp ffmpeg 参数-rtsp_transport tcp 用于指定RTSP会话底层传输协议为TCP 本身并不传输流媒体数据&#xff0c;只是提供流媒体的控制&#xff0c;实…...

Spring Web MVC(2)

响应 Http响应的结果可以是数据也可以是静态页面可以针对响应设置状态码 Header信息 返回静态页面注解RestController和Controller 我们创建一个前端页面 package com.example.demo.demos.web.controller;import org.springframework.web.bind.annotation.RequestMapping; i…...

Python-图片旋转360,保存对应图片

#Author &#xff1a;susocool #Creattime:2024/5/25 #FileName:turn360 #Description: 会旋转指定的图像文件360度&#xff0c;并将每个旋转后的图像保存到指定目录&#xff0c;文件名以旋转角度命名。 from PIL import Imagedef rotate_and_save(image_path, output_dir) :# …...

JavaSE——集合框架二(1/6)-前置知识-可变参数、Collections工具类

目录 可变参数 Collections工具类 Collections的常用静态方法 实例演示 可变参数 可变参数 就是一种特殊形参&#xff0c;定义在方法、构造器的形参列表里&#xff0c;格式是&#xff1a;数据类型...参数名称 可变参数的特点和好处 特点&#xff1a;可以不传数据给它&am…...

我用LLaMA-Factory微调大模型来实现商品评论情感分析,准确率高达91.70%

大家好&#xff0c;我是程序锅。 最近在modelscope上闲逛的时候&#xff0c;在数据集板块发现有一个商品评论情感预测数据集。这个数据集源自一个比赛&#xff0c;它的目的是为了预测电商平台顾客的评论是好评还是差评。 数据示例如下所示&#xff08;其中0代表差评&#xff…...

四大进制--详解--以及进制转换规则

进制介绍 对于整数, 有四种表达方式: 二进制BIN: 0,1 , 满2进1.以0b或0B开头 所谓2进制就是使用0和1来表示一个数, 满2进1如果在开发中看到有这种写法: int n1 0b1010; 这种写法没有错, 这是二进制的一种表示方式 十进制DEC: 0-9, 满10进1 十进制就是0-9来表示一个数, 满10进…...

谈谈API和人工智能领域的开发和使用以及AI大模型开发进程。

API,全称为Application Programming Interface,即应用程序编程接口,是一些预先定义的函数。 它的主要目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而无需访问源码,或理解内部工作机制的细节。API函数包含在操作系统的动态连接库文件中,例如Win…...

用Python Pygame做的一些好玩的小游戏

有些游戏的代码比较长就不公布了 1.简简单单 1.疯狂的鸡哥 你要准备的图片&#xff1a; 命名为&#xff1a;ji.png 代码&#xff1a; import pygame import random as r pygame.init() pygame.display.set_caption(aaa) pm pygame.display.set_mode((800,600))class Ls(py…...

【吊打面试官系列】Java高并发篇 - ThreadLocal 是什么?有什么用?

大家好&#xff0c;我是锋哥。今天分享关于 【ThreadLocal 是什么&#xff1f;有什么用&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; ThreadLocal 是什么&#xff1f;有什么用&#xff1f; ThreadLocal 是一个本地线程副本变量工具类。主要用于将私有线程和该…...

Spring MVC的数据转换及数据格式化:java 转换器接口(将一种类型的对象转换为另一种类型及其子类对象)

文章目录 引言I 将String转为BaseEnum的子类对象1.1 注册转换器工厂1.2 实现转换器工厂1.3 实现转换器接口 `interface Converter<S, T> `1.4 根据枚举code和type获取枚举II 枚举2.1 枚举接口2.2 枚举子类2.3 请求实体引言 Spring MVC的数据转换及数据格式化 应用场景:…...

【开源】多语言大型语言模型的革新:百亿参数模型超越千亿参数性能

大型人工智能模型&#xff0c;尤其是那些拥有千亿参数的模型&#xff0c;因其出色的商业应用表现而受到市场的青睐。但是&#xff0c;直接通过API使用这些模型可能会带来数据泄露的风险&#xff0c;尤其是当模型提供商如OpenAI等可能涉及数据隐私问题时。私有部署虽然是一个解决…...

DDL—表—数据类型—日期时间类型相关语法

&#xff08;1&#xff09;表格如下&#xff1a; 类型大小范围格式描述DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值&#xff08;年月日&#xff09;TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间&#xff08;时分秒&#xff09;YEAR11901 至 2155YYYY年份值DATET…...

Ant Design pro 6.0.0 搭建使用以及相关配置

一、背景 在选择一款比较合适的中台的情况下&#xff0c;挑选了有arco design、ant design pro、soybean、vue-pure-admin等中台系统&#xff0c;经过筛选就选择了ant design pro。之前使用过arco design 搭建通过组件库拼装过后台管理界面&#xff0c;官方文档也比较全&#…...

Vue生命周期钩子是如何实现的

Vue的生命周期钩子是在Vue组件创建、挂载、更新、销毁等过程中自动调用的特殊函数。这些钩子允许开发者在组件的不同阶段执行特定的逻辑。Vue 2 和 Vue 3 在生命周期钩子上有一些差异&#xff0c;主要是因为Vue 3引入了Composition API和更现代的JavaScript特性。 Vue 2 的生命…...

002 仿muduo库实现高性能服务器组件_整体框架

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;仿muduo &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多知识 文章目录 前言项目框架小结 前言 本文不会包含任何项目模块的代码&#xff0c;旨在向你介绍项目具体分为哪几个模块&am…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...