舞伴问题

问题描述:假设周末舞会上,男士们和女士们进入舞厅时各自排成一队。跳舞开始时,依次从男队和女队的队首各出列一名配成一对舞伴。若两队人数不同,则较长的那队中未配对的人等待下一首舞曲。是写一算法模拟上述配对问题。

解决方法:设置两个队列分别存男士和女士入队者。假设男士和女士的记录存在一个数组中作为输入,遍历数组将男士女士分别入队,对首出队配成舞伴,直至某队为空。此时,若某队仍有等待者,下一支舞曲开始时下一个入队的人排在此人后面。

入队,根据性别入不同的队列

cout<<"输入性别(以'#'截止):";
		cin>>sex;
		while (sex!='#'){//输入舞者的性别,以#截止
			if (sex=='F'){
				cout<<"输入女舞者姓名:";
				cin>>name;
				Fqueue.push(name);
			}
			if (sex=='M'){
				cout<<"输入男舞者姓名:";
				cin>>name;
				Mqueue.push(name);
			}

			cout<<"输入性别(以'#'截止):";
			cin>>sex;
		}

出队,成对成对出队,落单的人等待下一波

while(!Mqueue.empty()&&!Fqueue.empty()){//成对出列
			cout<<"男士:"<<Mqueue.front()<<' ';
			Mqueue.pop();
			cout<<"女士:"<<Fqueue.front()<<endl;
			Fqueue.pop();
		}

源代码

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

void main(){
	char sex;
	string name,choise;

	queue < string > Mqueue;//男队列
	queue < string > Fqueue;//女对列

	do {
		cout<<"输入性别(以'#'截止):";
		cin>>sex;
		while (sex!='#'){//输入舞者的性别,以#截止
			if (sex=='F'){
				cout<<"输入女舞者姓名:";
				cin>>name;
				Fqueue.push(name);
			}
			if (sex=='M'){
				cout<<"输入男舞者姓名:";
				cin>>name;
				Mqueue.push(name);
			}

			cout<<"输入性别(以'#'截止):";
			cin>>sex;
		}

		while(!Mqueue.empty()&&!Fqueue.empty()){//成对出列
			cout<<"男士:"<<Mqueue.front()<<' ';
			Mqueue.pop();
			cout<<"女士:"<<Fqueue.front()<<endl;
			Fqueue.pop();
		}

		cout<<"继续入队输入任意字符,停止入队输入END:";
		cin>>choise;
	} while (choise!="END");

	system("pause");
}

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值