有红、黄、黑、白4色球各一个,放置在编号为1,2,3,4的4个盒子里面,每个盒子一个球,顺序未知。甲、乙、丙三个人猜测放置顺序如下: 甲:黑球在1号盒子,黄球在2号盒子; 乙:黑球在2号盒子,白球

有红、黄、黑、白4色球各一个,放置在编号为1,2,3,4的4个盒子里面,每个盒子一个球,顺序未知。甲、乙、丙三个人猜测放置顺序如下:

甲:黑球在1号盒子,黄球在2号盒子;

乙:黑球在2号盒子,白球在3号盒子;

丙:红球在2号盒子,白球在4号盒子;

结果证明:甲、乙、丙三人各猜中一半,试通过程序求出4色球在盒子中的放置位置。

public class Test3_2_ztk {
    public static void main(String args[]){
        int a,b,c,d;
        for(a=1;a<5;a++){
            for(b=1;b<5;b++){
                for(c=1;c<5;c++){
                    if(a!=b&&b!=c&&a!=c){
                        d=10-a-b-c;
                        if((c==1^b==2)&&(c==2^d==3)&&(a==2^d==4))    //因为每个人的话就只有一半正确,所以利用异或进行并
                        {
                            System.out.println("红球在:"+a+"号盒子");
                            System.out.println("黄球在:"+b+"号盒子");
                            System.out.println("黑球在:"+c+"号盒子");
                            System.out.println("白球在:"+d+"号盒子");
                        }
                    }
                }
            }
        }

    }
}

还是进行暴力循环,一个颜色的球对应一个盒子,用数字进行代替,最后在进行条件的判断,每个人的描述只对一半,恰好利用异或运算。

这里的异或运算使用的很是巧妙,每个人都只说对了一半,恰巧符合异或运算的性质,最后将满足条件的进行输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值