Description
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一 人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲 。现要求写一个程序,模拟上述舞伴配对问题。
Input
第一行两队的人数;
第二行舞曲的数目。
Output
配对情况
Sample Input
4 6
7
Sample Output
1 1
2 2
3 3
4 4
1 5
2 6
3 1
问题分析:
显然,舞伴配对的顺序符合“先进先出”,所以,用两个队列分别表示存放男士队伍和女士队伍。然后,模拟k次配对:每次取个队队头元素“配对”输出,并进行“出对”和重新“入队”操作。
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
int a[maxn],b[maxn];
int main()
{
int n,m,k,t1,t2;
cin>>m>>n>>k;
for(int i=1;i<=m;i++)
{
a[i]=i;
}
for(int i=1;i<=n;i++)
{
b[i]=i;
}
t1=m;t2=n;
int x=0,y=0;
for(int i=1;i<=k;i++)
{
x++;
y++;
cout<<a[x]<<" "<<b[y]<<endl;
t1++;
a[t1]=a[x];
t2++;
b[t2]=b[y];
}
return 0;
}`