美文网首页
新郎和新娘

新郎和新娘

作者: 一路向后 | 来源:发表于2021-12-07 21:53 被阅读0次

    1.问题描述

    有3对情侣结婚,假设3个新郎为A,B,C,3个新娘为X,Y,Z。有参加婚礼的人搞不清楚谁和谁结婚,所以去询问了这六位新人中的3位,得到的回答如下:新郎A说他要和新娘X结婚;新娘X说她的未婚夫是新郎C;而新郎C说他要和新娘Z结婚。听到这样的回答后,提问者知道他们都是在开玩笑,说的都是假话,但他仍搞不清楚谁和谁结婚,现在请编程求出哪位新郎和哪位新娘结婚。

    2.源码实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    /*是否满足条件*/
    short isMatch(int a, int b, int c)
    {
        if(a == 0 || c == 0 || c == 2)
        {
            return 0;
        }
    
        if(a == b || a == c || b == c)
        {
            return 0;
        }
    
        return 1;
    }
    
    int main()
    {
        char groom[3] = {'A', 'B', 'C'};    /*新郎A, B, C*/
        char bride[3] = {'X', 'Y', 'Z'};    /*新娘X, Y, Z*/
        int gb[3] = {0, 0, 0};
        int gc[3] = {0, 0, 0};
        int i, j = 0;
    
        for(i=0; i<27; i++)
        {
            gb[0] = i % 3;
            gb[1] = (i / 3) % 3;
            gb[2] = i / 9;
    
            if(isMatch(gb[0], gb[1], gb[2]))
            {
                gc[0] = gb[0];
                gc[1] = gb[1];
                gc[2] = gb[2];
    
                j++;
            }
        }
    
        printf("probability = %d\n", j);
    
        for(i=0; i<3; i++)
        {
            printf("新郎%c和新娘%c结婚\n", groom[i], bride[gc[i]]);
        }
    
        return 0;
    }
    

    3.编译源码

    $ gcc -o test test.c -std=c89
    

    4.运行及其结果

    $ ./test
    probability = 1
    新郎A和新娘Z结婚
    新郎B和新娘X结婚
    新郎C和新娘Y结婚
    

    相关文章

      网友评论

          本文标题:新郎和新娘

          本文链接:https://www.haomeiwen.com/subject/roaaxrtx.html