69,373
社区成员
发帖
与我相关
我的任务
分享
//舞会上,男士们(m人)和女士们(n人, n<m)进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。
//男队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。在第t首曲子时,第x个女生和第几个男生配对跳舞?
#include <stdio.h>
#include <string.h>
#define MAX 26
int m,n,t,x,y,i,j,k;
char md[MAX];
char nd[MAX];
char c;
void main() {
while (1) {
printf("Input n m(1<=n<m<=%d):",MAX);
fflush(stdout);
rewind(stdin);
if (2==scanf("%d%d",&n,&m)) {
if (1<=n && n<m && m<=MAX) break;
}
}
while (1) {
printf("Input t x(1<=t<=%d 1<=x<=%d):",MAX,n);
fflush(stdout);
rewind(stdin);
if (2==scanf("%d%d",&t,&x)) {
if (1<=t && t<=MAX && 1<=x && x<=n) break;
}
}
for (i=0;i<m;i++) md[i]='A'+i;
for (i=0;i<n;i++) nd[i]='a'+i;
k=0;
for (i=0;i<t;i++) {
printf("%2d: ",i+1);
for (j=0;j<n;j++) {
c=' ';
if (i==t-1 && j==x-1) {c='*';y=k+1;}
printf("%c%c%c",md[k],nd[j],c);
k=(k+1)%m;
}
printf("\n");
}
printf("%d\n",y);
}