zoukankan      html  css  js  c++  java
  • 数据结构与算法面试题80道(22)

    4张红色的牌和4张蓝色的牌,主持人先拿任意两张,再分别在ABC三人额头上贴任意两张牌,

    ABC三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色的牌,

    A说不知道,B说不知道,C说不知道,然后A说知道了。

    请教如何推理,A是怎么知道的。

    如果用程序,又怎么实现呢?

    分析:如果满足题设,每个人都有三种情况,红红、蓝蓝、红蓝。

    如果在场的三个人,存在红红、蓝蓝、红蓝并且三个人都不知道,那么头上为红蓝的人可以猜出自己的颜色。

    如果在场的三个人,存在(红红、蓝蓝、蓝蓝),那么肯定有人知道自己是什么颜色

    如果在场的三个人,存在(红红、红红、蓝蓝),那么肯定有人知道自己是什么颜色

    如果在场的三个人,存在(红蓝、红蓝、红蓝),那么三个人肯定都不知道自己是什么颜色

    如果在场的三个人,存在(红红、红蓝、红蓝),那么三个人肯定都不知道自己是什么颜色

    如果在场的三个人,存在(蓝蓝、红蓝、红蓝),那么三个人肯定都不知道自己是什么颜色

    综上所述:A如果知道自己是什么颜色、并且三个人开始都不知道自己是什么颜色,说明BC肯定为蓝蓝红红或者红红蓝蓝,A肯定为红蓝

    题意:用程序设计一个当B为红红、C为蓝蓝或者B为蓝蓝、C为红红的时候A为红蓝的电路。#include<cstdiostruct person{

    int x;//代表红色牌的数量
        int y;//代表蓝色牌的数量
    };
    
    //判断是否三个人都不知道,并且判断每个人是不是有两个牌
    bool init(person p1,person p2,person p3){
        if(p1.x+p2.x>3||p1.x+p3.x>3||p2.x+p3.x>3){
            cout<<"有人知道"<<endl;
            return false;
        }
        if(p1.y+p2.y>3||p1.y+p3.y>3||p2.y+p3.y>3){
            cout<<"有人知道"<<endl;
            return false;
        } 
        if(p1.x+p1.y!=2||p2.x+p2.y!=2||p3.x+p3.y!=2){
            cout<<"有人牌的数量不对"<<endl;
            return false;
        }
        if(p1.x<0||p1.y<0||p2.x<0||p2.y<0||p3.x<0||p3.y<0){
            cout<<"不合常理"<<endl;
            return false;
        }
        if(p1.x>2||p1.y>2||p2.x>2||p2.y>2||p3.x>2||p3.y>2){
            cout<<"不合规则"<<endl;
            return false;
        }
        return true;
    }
    
    //如果满足开始三个人都无法断定自己的颜色A能知道,输出true,否则输出false
    bool youKnow(person p1,person p2,person p3){
        if(!init()) {cout<<"设计不合理"<<endl;return false;}
        if(p2.x==2&&p3.x==0) return true;
        else ifp2.x==0&&p3.x==2) return true;  
        else return false;
    }

                                        

  • 相关阅读:
    服务端主动关闭 time_wait
    告别Excel!别人家高大上的财务数据分析,这才是老板的最爱
    客户端主动关闭,timed_wait
    两千字揭密 MySQL 8.0.19 三大索引新功能:隐藏索引,降序索引,函数索引
    零基础入门深度学习(3)
    零基础入门深度学习(3)
    零基础入门深度学习(3)
    android 动画学习总结
    android 动画学习总结
    android 动画学习总结
  • 原文地址:https://www.cnblogs.com/wabi87547568/p/5271706.html
Copyright © 2011-2022 走看看