1. 程式人生 > >C語言程式設計狼追兔子問題程式碼解析

C語言程式設計狼追兔子問題程式碼解析

問題描述

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

問題分析

首先定義一個數組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,則兔子可能藏身於該洞中。

下面是程式流程圖:



下面是完整程式碼:

#include <stdio.h>
int main()
{
    int n=0, i=0, x=0;
    int a[11];
    for(i=0; i<11; i++)  /*設定陣列初值*/
        a[i]=1;
    for(i=0; i<1000; i++)  /*窮舉搜尋*/
    {
        n+=(i+1);
        x=n%10;
        a[x]=0;  /*未找到,置0*/
    }
    for(i=0; i<10; i++)  /*輸出結果*/
    {
        if(a[i])
            printf("可能在第%d個洞\n", i);
    }
    return 0;
}

執行結果:

可能在第2個洞
可能在第4個洞
可能在第7個洞
可能在第9個洞

C語言程式設計狼追兔子問題程式碼解析