舞伴问题
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; }