#include<bits/stdc++.h>
using namespace std;
const int N=100;
string Man[N],Woman[N];
int n,m;
int main()
{
cout<<"请输入男队的人数:";
cin>>n;
cout<<"请依次输入舞者的姓名:\n";
for(int i=0;i<n;i++){
cout<<"第"<<i+1<<"位:";
cin>>Man[i];
}
cout<<"请输入女队的人数:";
cin>>m;
cout<<"请依次输入舞者的姓名:\n";
for(int i=0;i<m;i++){
cout<<"第"<<i+1<<"位:";
cin>>Woman[i];
}
/*for(int i=0;i<n;i++){
cout<<Man[i]<<endl;
}
for(int i=0;i<m;i++){
cout<<Woman[i]<<endl;
}*/
int Gcd=__gcd(n,m),Min=min(n,m);
int Round=(n/Gcd*m)/Min;
int cura=0,curb=0;
for(int r=1;r<=Round;r++){
cout<<"第"<<r<<"轮舞会"<<endl;
for(int k=0;k<Min;k++,cura=(cura+1+n)%n,curb=(curb+1+m)%m){
cout<<"第"<<k+1<<"对:";
cout<<"男舞者:"<<Man[cura]<<" ,女舞者:"<<Woman[curb]<<endl;
}
if(r!=Round){
cout<<"下一轮 第一对舞伴应为:"<<"男舞者:"<<Man[cura]<<" ,女舞者:"<<Woman[curb]<<endl;
}
}
return 0;
}
/*
3
Liu
Long
Yu
4
Feng
Du
Han
Li
*/
#include<string>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW 0
#define MAXSIZE 100
using namespace std;
typedef int Status;
typedef string QElemType;
typedef struct Cirqueue{
QElemType *base;
int Front ;
int Rear;
}CirQueue;
Status InitQueue(CirQueue &Q){
Q.base=new string [MAXSIZE];
if(!Q.base) exit(OVERFLOW);
Q.Front = Q.Rear = 0;
return OK;
}
Status QueueLength(CirQueue Q){
return ( Q.Rear - Q. Front + MAXSIZE )% MAXSIZE ;
}
Status PushQueue(CirQueue &Q , QElemType e){
if( ( Q.Rear +1 ) % MAXSIZE == Q.Front ){return puts("队列已满")*ERROR;}
Q.base[Q.Rear]=e;
Q.Rear = (Q.Rear+1)%MAXSIZE;
}
Status PopQueue(CirQueue &Q , QElemType &e){
if(Q.Front==Q.Rear){ return puts("队列为空")*ERROR; }
e=Q.base[Q.Front];
Q.Front=(Q.Front+1)%MAXSIZE;
return OK;
}
int gcd(int a,int b){
return a%b==0?b:gcd(b,a%b);
}
int min(int a,int b){
return a<b?a:b;
}
int main()
{
char *tmp;
int n,m;
CirQueue Man,Woman;
InitQueue(Man),InitQueue(Woman);
printf("请输入男队的人数:");
scanf("%d",&n);
puts("请依次输入舞者的姓名:");
for(int i=0;i<n;i++){
printf("第 %d 位: ",i+1);
scanf("%s",tmp);
PushQueue(Man,tmp);
}
printf("请输入女队的人数:");
scanf("%d",&m);
printf("请依次输入舞者的姓名:\n");
for(int i=0;i<m;i++){
printf("第 %d 位: ",i+1);
scanf("%s",tmp);
PushQueue(Woman,tmp);
}
int Gcd=gcd(n,m),Min=min(n,m);
int Round=(n/Gcd*m)/Min;
//printf("Round %d\n",Round);
string man,woman;
for(int r=1;r<=Round;r++){
printf("Round: %d \n",r);
for(int k=0;k<Min;k++){
PopQueue(Man,man);
PushQueue(Man,man);
PopQueue(Woman,woman);
PushQueue(Woman,woman);
printf("男舞伴 :");
cout<<man<<" ";
printf("女舞伴 :");
cout<<woman<<endl;
}
if(r!=Round){
cout<<"\n下一轮的 男舞伴为:"<<Man.base[Man.Front]<<" , 女舞伴为: "<<Woman.base[Woman.Front]<<endl<<endl;
}
}
return 0;
}