C语言 婚礼上的谎言

来源:互联网 发布:c语言获取网页内容 编辑:程序博客网 时间:2024/05/01 13:36

   问题: 

        3对情侣参加婚礼,3个新。郎分别为a、b、c,三个新郎分别为 x、y、z。有人想知道究竟谁和谁结婚,于是就问新人中的三位,得到如下提示:a说 他将和X结婚;x说她的未婚夫是c;c说她将和z 结婚。这人时候知道他们都在开玩笑,说的全是假话,那么究竟谁和谁结婚呐。


解决本题的算法思想:

             用a = 1 表示新郎a 和 新娘x 结婚,同理,如果新郎a 不与x 结婚则表示成 a!=1。根据题意可以得到以下表达式:

             a != 1;                      a说她将和x结婚

             c != 1;                      x说她的未婚夫是c

             c != 3;                      c说他将和z结婚

       题中的隐含条件,即3个新郎不能互为配偶,则有:a != b;  b != c; c != a;穷举所有可能的情况,通过上述表达式进行推理。如果假设的情况使上述表达式成立,则假设的情况就是正确的结果。

源代码:

#include<stdio.h> int main(){    int a, b, c;    for (a = 1; a <= 3; a++)              //穷举所有可能    {        for (b = 1; b <= 3; b++)        {            for (c = 1; c <= 3; c++)            {                if (a != 1 && c != 1 && c != 3 && a!= b&&b != c&&c != a ) //如果表达式为真,则输出结果                {                    printf("%c will merryto a\n", 'x' + a - 1);                    printf("%c will merryto a\n", 'x' + b - 1);                    printf("%c will merryto a\n", 'x' + c - 1);                }            }        }    }    return 0;}


原创粉丝点击