华东师范大学上机题——舞会配对
题目描述:
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的对头上各出一个人配成舞伴。规定每个舞曲能有一队跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。
Input:
三个整数m,n,k(1<=m,n<=150,1<=k<=4000),分别表示男士人数,女士人数,几轮舞曲。
Output:
输出各轮舞曲的配对方案。
Example:
input
2 4 6
output
1 1
2 2
1 3
2 4
1 1
2 2
算法思路:
定义两个指针指向男士列队和女士列队,每当指针指到队尾,本轮舞曲结束后指针就还原到开头。
#include<iostream>
using namespace std;
int main() {
int m, n, k;
cout << "输入男士人数:";
cin >> m;
cout << "输入女士人数:";
cin >> n;
cout << "输入舞曲轮数:";
cin >> k;
int i = 1, j = 1;
for (int p = 1;p <= k;p++) {
cout << i << " " << j << endl;
i++;
j++;
if (i > m)
i = 1;
if (j > n)
j = 1;
}
return 0;
}
运行测试结果: