01.20 酷叮貓C語言課堂-狼追兔子問題

問題描述

一隻兔子躲進了10個環形分佈的洞中的一個。狼在第一個洞中沒有找到兔子,就隔一個洞,到第3個洞去找;也沒有找到,就隔2個洞,到第6個洞去找;以後每次多一個洞去找兔子……這樣下去,如果一直找不到兔子,請問兔子可能在哪個洞中?


酷叮貓C語言課堂-狼追兔子問題


問題分析

首先定義一個數組a[11],其數組元素為a[1],a[2],a[3]……a[10],這10個數組元素分別表示10個洞,初值均置為1。

接著使用“窮舉法”來找兔子,通過循環結構進行窮舉,設最大尋找次數為1000次。由於洞只有10個,因此第n次查找對應第n%10個洞,如果在第n%10個洞中沒有找到兔子,則將數組元素a[n%10]置0。

當循環結束後,再檢查a數組各元素(各個洞)的值,若其值仍為1,則兔子可能藏身於該洞中。

下面是程序流程圖:

酷叮貓C語言課堂-狼追兔子問題


算法設計

理解了問題分析中的遞歸處理過程後,算法設計就非常簡單了。只需要將公式轉換成一個函數,然後用main()函數調用它就可以了。

下面是完整的代碼:

#include

int age(int n)

{

int x;

if(n == 1)

x=10;

else

x=age(n-1)+2;

return x;

}

int main()

{

int n;

printf("請輸入n值:");

scanf("%d", &n);

printf("第%d個人的年齡為%d ", n, age(n));

return 0;

}

運行結果:

可能在第2個洞

可能在第4個洞

可能在第7個洞

可能在第9個洞


分享到:


相關文章: