java题结婚,新郎新年结婚问题-java

三对情侣参加婚礼,三个新郞为A、B、C,三个新娘为X、Y、Z。有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的: A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。  这人听后知道他们在开玩笑,全是假话。请编程找出谁将和谁结婚。

//A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。

// 假设 abc  对应  123(xyz)

这道题的解法是需要遍历所有的可能, 刚开始的想法是 3*3 次 可以遍历所有的可能, 就是 一个嵌套循环就可以了,然后发现问题没有那么简单,因为遍历的时候还需要如果 其中新郎新娘有条件 不符合 需要重新遍历寻找例外一种组合的可能,所以需要 换种模型,将  三个新郎 ABC,抽象成三个 循环嵌套,就能遍历所有的可能了,新郎A 第一个循环可能搭配 XYZ 中的 任意一个,新郎 B 和 新郎C 同样也是,但是需要注意限制条件,除里上面的三个条件以外,还有个隐藏条件, 新郎对应的新娘分别都是不同的,所以逻辑上是 新郎A 对应 新娘 XYZ 的时候,新郎B 和 新郎 C 同样在 内循环中对应 新娘 XYZ,代码如下:

for (int a = 1; a <= 3; a++) {

for (int b = 1; b <= 3; b++) {

for (int c = 1; c <= 3; c++) {

}

}

}

三个循环嵌套,将所有的可能都包含了,然后需要加上判断条件1.flag是新郎新娘不能重复交叉的判断条件,2.flag1是题目给出的判断条件,如下:

char cs[] = {'x','y','z'};

for (int a = 1; a <= 3; a++) {

for (int b = 1; b <= 3; b++) {

for (int c = 1; c <= 3; c++) {

boolean flag = a != b && a != c && b !=c;

boolean flag1 = a != 1 && c!= 1  && c != 3;

if(flag1 &&  flag){

System.out.println(cs[a-1]+"-"+cs[b-1]+"-"+cs[c-1]);

}

}

}

}

完整的 class 类代码如下:

package dataStract; public class XlxlTest {     public static void main(String[] args) {                  char cs[] = {'x','y','z'};                  for (int a = 1; a <= 3; a++) {                          for (int b = 1; b <= 3; b++) {                                  for (int c = 1; c <= 3; c++) {                                          boolean flag = a != b && a != c && b !=c;                      boolean flag1 = a != 1 && c!= 1  && c != 3;                                        if(flag1 &&  flag){                         System.out.println(cs[a-1]+"-"+cs[b-1]+"-"+cs[c-1]);                     }                                      }                              }                      }     } }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值