数学趣题——新郎和新娘

一、题目

      新郎A,B,C。新娘X,Y,Z。

      A说他将和X结婚,X说她将和C结婚,C说他将和Z结婚。这三句全是假的。请问真正是怎么配对‘

二、分析

     可以用穷举法,一共3+2+1种可能方案。

     A,B,C位置不变,不断调换X,Y,Z的位置。

三、源码

   1: #include <stdio.h>
   2:  
   3: int match(int i, int j, int k, char wife[]);
   4:  
   5: int main()
   6: {
   7:     int i, j ,k;
   8:     char husband[3] = {'A', 'B', 'C'};
   9:     char wife[3] = {'X', 'Y', 'Z'};
  10:  
  11:     for(i=0; i<3; i++)
  12:         for(j=0; j<3; j++)
  13:             for(k=0; k<3; k++)
  14:                 if (i!=j && j!=k && i!=k)
  15:                 {
  16:                     if (match(i,j,k,wife))
  17:                     {
  18:                         printf("husband wife\n");
  19:                         printf("A----------%c\n", wife[i]);
  20:                         printf("B----------%c\n", wife[j]);
  21:                         printf("C----------%c\n", wife[k]);
  22:                     }
  23:                 }
  24:     return 0;
  25: }
  26:  
  27: int match(int i, int j, int k, char wife[])
  28: {
  29:     if (wife[i] == 'X')
  30:         return 0;
  31:     if (wife[k] == 'X')
  32:         return 0;
  33:     if ( wife[k] == 'Z')
  34:         return 0;
  35:  
  36:     return 1;
  37: }
posted @ 2010-05-25 10:11  红脸书生  阅读(942)  评论(0编辑  收藏  举报