数据结构实验二

#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;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值