舞伴配对问题

hlyjl 2011-07-29 04:21:14
请问,大家有没有用C语言写的关于舞伴配对问题的代码,能否让我参考参考?题目如下:
在周末舞会上,男士们(m人)和女士们(n人, n<m)进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。(1)在第t首曲子时,第x个女生和第几个男生配对跳舞?
...全文
842 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
siasjack 2011-11-02
  • 打赏
  • 举报
回复
哈哈 赵中大哥果然很强大啊!运行了 没有错误!完美实现...今晚就抱着你的代码睡觉了!呵呵
siasjack 2011-11-02
  • 打赏
  • 举报
回复
其实这个并不难 主要是算法的问题,怎么算出来第x个女生和第几个男生跳舞呢?呵呵 赵忠大哥还是不错的!去试试他的程序
hndcwynui 2011-07-31
  • 打赏
  • 举报
回复
直接模拟
2220728 2011-07-30
  • 打赏
  • 举报
回复
学习了。。但是离散数学里不是有这个问题吗??用图。。
赵4老师 2011-07-29
  • 打赏
  • 举报
回复
//舞会上,男士们(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);

}
品茶 2011-07-29
  • 打赏
  • 举报
回复
((t-1)*n+x)%m
ouyh12345 2011-07-29
  • 打赏
  • 举报
回复
逻辑上不复杂啊,2个环,长分别为m和n,一次移动n

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧