周末舞会(c语言)

Description

假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。

Input

第一行男士人数m和女士人数n(1<=m,n<=100);
第二行舞曲的数目k(1<=k<=100)。

Output

共k行,每行两个数,表示配对舞伴的序号,男士在前,女士在后。

Sample Input
4 3
6

Sample Output
1 1
2 2
3 3
4 1
1 2
2 3

HINT

代码:

#include <stdio.h>
 
void input(int a[],int n);
void inputarr(int b[],int m);
void cancle(int a[],int b[],int n,int m,int k,int h);
void canclearr(int a[],int b[],int n,int m,int k,int h);
 
int main()
{
    int k,n,m,h;
     
    int a[120]={0};
    int b[120]={0};
     
    scanf("%d%d%d",&n,&m,&k);
     
    input(a,n);
    inputarr(b,m);
     
    h=n>m?n:m;
     
    if(n>=m)
    {
        cancle(a,b,n,m,k,h);
    }
    else
    {
        canclearr(a,b,n,m,k,h);
    }
     
    return 0;   
 } 
  
 void input(int a[],int n)
 {
    int i=1;
    for(i=1;i<=n;i++)
    {
        a[i]=i;
    }   
 }
  
 void inputarr(int b[],int m)
 {
    int i=1;
    for(i=1;i<=m;i++)
    {
        b[i]=i;
    }   
 }
  
 // 男士 n ,女士 m   n>=m的情况 
 void cancle(int a[],int b[],int n,int m,int k,int h)
 {
    int i=1,j=1,l=1;
    while(k>0)
    {
        for(j=1;j<=h;j++) //h为 m 和 n 中的较大者 
        {   
            if(i<=m)
            {
                printf("%d %d\n",j,i);
                k--;
                i++;
                if(k==0)
                {
                    break;
                }
            }
            else
            {
                l=1;
                printf("%d %d\n",j,l);
                l++;
                i=l;
                k--;
                if(k<=0)
                {
                    break;
                }           
            }   
        }       
     }      
 }
  
 //男士少于女士的情况 
 void canclearr(int a[],int b[],int n,int m,int k,int h)
 {
    int i=1,j=1,l=1;
    while(k>0)
    {
        for(j=1;j<=h;j++) //h为 n 和 m 中的较大者 
        {   
            if(i<=n)
            {
                printf("%d %d\n",i,j);
                k--;
                i++;
                if(k==0)
                {
                    break;
                }
            }
            else
            {
                l=1;
                printf("%d %d\n",l,j);
                l++;
                i=l;
                k--;
                if(k<=0)
                {
                    break;
                }               
            }   
        }           
     }  
 }
发布了7 篇原创文章 · 获赞 10 · 访问量 1037

猜你喜欢

转载自blog.csdn.net/weixin_43398327/article/details/89047846