閱讀943 返回首頁    go 阿裏雲 go 技術社區[雲棲]


有關“樹上剩餘幾隻鳥”的問題的思考及解答

有一次,我被問到了一個貌似腦筋急轉彎的問題:“樹上有五隻鳥,獵人開槍打死了一隻,請問樹上還剩下幾隻鳥?”

對於這個問題,想必大家都有被問到過,或者是在什麼地方看到過。這個問題實際上並沒有標準答案,它考察的是一個人思維的發散程度。對於自己想到的每個答案,隻要能夠找到讓人信服的理由就可以了。

我認為,這個問題的答案可以是大於或等於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;              
}

以上隻是我給出的一組解答,相信大家也會給出自己心目中的答案。總的說來,從不同的角度來看待這個問題,就會給出不同的答案,這也正如一句詩所雲:“橫看成嶺側成峰,遠近高低各不同”。

最後更新:2017-10-22 10:33:20

  上一篇:go  LVM 裸盤擴容分區步驟
  下一篇:go  CentOS7重置root密碼