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