有关“树上剩余几只鸟”的问题的思考及解答

简介: 有一次,我被问到了一个貌似脑筋急转弯的问题:“树上有五只鸟,猎人开枪打死了一只,请问树上还剩下几只鸟?”本文给出了我的答案。

有一次,我被问到了一个貌似脑筋急转弯的问题:“树上有五只鸟,猎人开枪打死了一只,请问树上还剩下几只鸟?”

对于这个问题,想必大家都有被问到过,或者是在什么地方看到过。这个问题实际上并没有标准答案,它考察的是一个人思维的发散程度。对于自己想到的每个答案,只要能够找到让人信服的理由就可以了。

我认为,这个问题的答案可以是大于或等于0的任意一个整数,具体原因如下代码所示:

/**********************************************************************
* 版权所有 (C)2015, Zhou Zhaoxiong。
*
* 文件名称:AnswersOfBirds.c
* 文件标识:无
* 内容摘要:有关“树上剩余几只鸟”的问题的解答
* 其它说明:无
* 当前版本:V1.0
* 作    者:Zhou Zhaoxiong
* 完成日期:20160108
*
**********************************************************************/
#include <stdio.h>

// 重定义数据类型
typedef unsigned int        UINT32;
typedef signed   int        INT32;

/**********************************************************************
* 功能描述:主函数
* 输入参数:无
* 输出参数:无
* 返 回 值:无
* 其它说明:无
* 修改日期        版本号      修改人              修改内容
* ---------------------------------------------------------------
* 20160108        V1.0     Zhou Zhaoxiong          创建
***********************************************************************/
INT32 main()
{
    UINT32 iBirdsLeft = 0;      // 用于表示树上剩余的鸟的数量

    // 输入想要的答案
    printf("请输入你想要的答案(可以输入任意一个大于或等于0的整数): \n");
    scanf("%d", &iBirdsLeft);

    // 根据输入的答案找到给出此答案的理由
    switch (iBirdsLeft)
    {
        case 0:
        {
            printf("打死其中一只鸟之后, 这只被打死的鸟掉到了地上, 其他四只鸟因为受到了惊吓, 所以也飞走了, 树上一只鸟也没有了!\n");
            break;
        }

        case 1:
        {
            printf("打死其中一只鸟之后, 这只被打死的鸟还挂在树上, 其他四只鸟因为受到了惊吓, 所以也飞走了, 树上剩下了这只被打死的鸟!\n");
            break;
        }

        case 2:
        {
            printf("打死其中一只鸟之后, 这只被打死的鸟还挂在树上, 其他四只鸟中有一只是死者的伴侣, 它一直守护在死者的身边, 而另外三只鸟飞走了, 因此树上剩下了两只鸟!\n");
            break;
        }

        case 3:
        {
            printf("打死其中一只鸟之后, 这只被打死的鸟还挂在树上, 其他四只鸟中有两只是死者的父母, 它们一直守护在死者的身边, 而另外两只鸟飞走了, 因此树上剩下了三只鸟!\n");
            break;
        }

        case 4:
        {
            printf("打死其中一只鸟之后, 这只被打死的鸟掉到了地上, 其他四只鸟一时之间不知道发生了什么事, 都留在原地不动, 因此树上剩下了四只鸟!\n");
            break;
        }

        case 5:
        {
            printf("打死其中一只鸟之后, 这只被打死的鸟还挂在树上, 其他四只鸟分别是死者的父母和两个子女, 它们一直守护在死者的身边, 因此树上剩下了五只鸟!\n");
            break;
        }

        default:   // 输入6或更大的数
        {
            printf("被打死的鸟属于一个稀有的品种, 猎人因此受到了惩罚, 大家也开始保护环境, 这使得树上的鸟儿越来越多了!\n");
            break;
        }
    }


    return 0;              
}

以上只是我给出的一组解答,相信大家也会给出自己心目中的答案。总的说来,从不同的角度来看待这个问题,就会给出不同的答案,这也正如一句诗所云:“横看成岭侧成峰,远近高低各不同”。

目录
相关文章
|
28天前
有红、白、黑三种球若干个,求红白黑球的数量
有红、白、黑三种球若干个,求红白黑球的数量
14 1
|
9月前
|
算法 机器人 C语言
【二分查找】分巧克力、机器人跳跃、数的范围
开始准备蓝桥杯啦!这是计划的一部分,每天都会更新一个专题的内容,内容参考自acwing蓝桥杯辅导课,有兴趣的uu们也可以自行观看
77 0
|
20天前
|
算法 测试技术 C#
【图论】【分类讨论】LeetCode3017按距离统计房屋对数目
【图论】【分类讨论】LeetCode3017按距离统计房屋对数目
|
20天前
|
人工智能 算法 BI
【图论】【树】 【拓扑排序】2603. 收集树中金币
【图论】【树】 【拓扑排序】2603. 收集树中金币
|
3月前
|
人工智能 算法 BI
【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目
【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目
|
5月前
|
机器学习/深度学习
蓝桥杯-2/14天-货物摆放【拒绝暴力-巧妙提公因子】
蓝桥杯-2/14天-货物摆放【拒绝暴力-巧妙提公因子】
|
数据安全/隐私保护
【广度优先搜索】N叉树的层序遍历 | 腐烂的橘子 | 单词接龙 | 最小基因变化 | 打开转盘锁
【广度优先搜索】N叉树的层序遍历 | 腐烂的橘子 | 单词接龙 | 最小基因变化 | 打开转盘锁
【广度优先搜索】N叉树的层序遍历 | 腐烂的橘子 | 单词接龙 | 最小基因变化 | 打开转盘锁
每日三题-岛屿数量、合并二叉树、课程表
每日三题 岛屿数量 合并二叉树 课程表
44 1
每日三题-岛屿数量、合并二叉树、课程表
Day35—— 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
Day35—— 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
51 0
|
存储 算法
掉一根头发,搞定二叉排序(搜索)树
在数据结构与算法中,树是一个比较大的家族,家族中有很多厉害的成员,这些成员有二叉树和多叉树(例如B+树等),而二叉树的大家族中,二叉搜索树(又称二叉排序树)是最最基础的,在这基础上才能继续拓展学习AVL(二叉平衡树)、红黑树等知识。
46 0
掉一根头发,搞定二叉排序(搜索)树