Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538856
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-04-06 17:34:54

    3对新婚夫妇参加婚礼,3个新娘为A,B,C,三个新娘为X,Y,Z.有人不知道谁和谁结婚,于是询问了6位新人中的三位,但听到的回答是这样的:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。这人听后知道他们在开玩笑,全是假话。请编写程序找出谁将和谁结婚。
    我们知道,一个新郎只和一个新娘结婚。因此针对新郎共有3*2*1=6种情况,我们只要拿这六种情况和他们所说的进行一一对比,即可找到最后的正确答案,代码如下:
  1. #include
  2. int match(int i, int j, int k, char wife[]);
  3. int main(int argc, char *argv[])
  4. {
  5. char husband[3] = {'A','B','C'}, wife[3] = {'X','Y','Z'};
  6. int i, j, k;
  7. for(i=0; i<3; i++)
  8. for(j=0; j<3; j++)
  9. for(k=0; k<3; k++)
  10. if(i!=j && i!=k && j!=k)
  11. {
  12.   if(match(i,j,k,wife))
  13.   {
  14.     printf("husband\twife\n");
  15.     printf("A\t%c\n",wife[i]);
  16.     printf("B\t%c\n",wife[j]);
  17.     printf("C\t%c\n",wife[k]);
  18.   }
  19. }
  20. return 0;
  21. }
  22. int match(int i, int j, int k, char wife[])
  23. {
  24.   if(wife[i] == 'X') return 0;
  25.   if(wife[k] == 'X') return 0;
  26.   if(wife[k] == 'Z') return 0;
  27.   return 1;
  28. }
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out 
husband wife
A       Z
B       X
C       Y

阅读(1848) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~