舞伴问题 swustoj

舞伴问题
 1000(ms)
 10000(kb)
 2103 / 5049 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。要求编写程序实现舞伴问题。

输入

输入一共5行,
第一行是男生人数m;
第二行依次是男生的姓名;
第三行是女士的人数n;
第四行依次是女士的姓名;
第五行是跳舞的轮数。

输出

配对的男士和女士的姓名。

样例输入

5
A B C D E
3
F G H
2

样例输出

B G
 #include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct
{
	char *base;
	int r,l;
}Queue;
int main()
{
	Queue man,woman;//创建队列
	man.l=man.r=woman.l=woman.r=0;//给队列的指针赋值。
	int n,m;
	cin>>n;//创建man队列;
	man.base=(char *)malloc(n*sizeof(char));
	for(int i=0;i<n;i++)
	{
		cin>>man.base[i];
	}
	cin>>m;//创建woman队列;
	woman.base=(char *)malloc(m*sizeof(char));
	for(int i=0;i<m;i++)
	{
		cin>>woman.base[i];
	}
	int t;
	cin>>t;//设置时间;
	for(int i=1;i<t;i++)//man循环次数
	{
		if(man.l==(man.r+1)%n) continue;
		man.r=(man.r+1)%n;
	}
	for(int i=1;i<t;i++)//woman循环次数
	{
		if(woman.l==(woman.r+1)%m) continue;
		woman.r=(woman.r+1)%m;
	}
	cout<<man.base[man.r]<<" "<<woman.base[woman.r];//输出。
	return 0;
}

    原文作者:舞伴问题
    原文地址: https://blog.csdn.net/qq_40328281/article/details/80032575
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞