编程语言
首页 > 编程语言> > 算法-经典趣题-新郎和新娘

算法-经典趣题-新郎和新娘

作者:互联网

一、问题

新郎和新娘问题是非常典型的智力推理问题。

新郎和新娘问题的大意如下:

有三对新郎和新娘参加集体婚礼,三个新郞为A、B、C,三个新娘为X、Y、Z。主持婚礼的人一时间忘了谁应该和谁结婚。于是,他便问参加婚礼的6个人中的三个,得到的回答如下:

新郎A说他将和新娘X结婚;

新娘X说她将和新郎C结婚;

新郎C说她将和新娘Z结婚。

聪明的主持人知道他们在与他开玩笑,但是,此时主持人已经推算出了谁应该和谁结婚。那么,到底是谁应该和谁结婚呢?

二、分析

我们来分析下问题,三个新郎和三个新娘随机结婚的话,共有6种可能,根据前面所述的3个错误条,便可以采用穷尽法来逐个对照,直到找到正确的结婚对象。

现在我们将A、B、C这3人分别用 1、2、3 表示,将X和A结婚表示为"X=1",将X与C结婚表示为"X=3",将C与Z结婚表示为"Z=3"。按照题目中的叙述可以写出表达式:

三、编程

package com.joshua317;

public class Main {
    public static void main(String[] args) {
        char[] husband = {'A', 'B', 'C'};
        char[] wife = {'X', 'Y', 'Z'};
        int i;
        System.out.println("参加婚礼的新郎为:");
        for (i=0; i<3; i++) {
            System.out.printf(" %c", husband[i]);
        }
        System.out.println();
        System.out.println("参加婚礼的新娘为:");
        for (i=0; i<3; i++) {
            System.out.printf(" %c", wife[i]);
        }
        System.out.println();

        int X, Y, Z;

        //假定A、B、C这3人分别用 1、2、3 表示
        //穷举x的全部可能配偶
        for (X = 1; X <= 3; X++) {
            //穷举y的全部可能配偶
            for (Y = 1; Y <= 3; Y++) {
                //穷举z的全部可能配偶
                for (Z = 1; Z <= 3; Z++) {
                    if (X!=1 && X!=3 && Z!=3 && X!=Y && Y!=Z && X!=Z) {
                        //得到X,Y,Z对应的值
                        System.out.printf("X的值:%d, Y的值:%d, Z的值:%d\n", X,Y,Z);
                        //打印匹配的结果
                        System.out.printf("X与%c结婚\n", husband[X-1]);
                        System.out.printf("Y与%c结婚\n", husband[Y-1]);
                        System.out.printf("Z与%c结婚\n", husband[Z-1]);
                    }
                }
            }
        }
    }
}
 

 

 

 

 

标签:结婚,joshua317,com,新娘,算法,趣题,新郎,表达式
来源: https://www.cnblogs.com/joshua317/p/15381024.html