【C語言學(xué)習(xí)筆記系列】C語言編程狼追兔子問題代碼解析!

問題描述

一只兔子躲進(jìn)了10個(gè)環(huán)形分布的洞中的一個(gè)。狼在第一個(gè)洞中沒有找到兔子,就隔一個(gè)洞,到第3個(gè)洞去找;也沒有找到,就隔2個(gè)洞,到第6個(gè)洞去找;以后每次多一個(gè)洞去找兔子……這樣下去,如果一直找不到兔子,請問兔子可能在哪個(gè)洞中?


問題分析

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

接著使用“窮舉法”來找兔子,通過循環(huán)結(jié)構(gòu)進(jìn)行窮舉,設(shè)最大尋找次數(shù)為1000次。由于洞只有10個(gè),因此第n次查找對應(yīng)第n%10個(gè)洞,如果在第n%10個(gè)洞中沒有找到兔子,則將數(shù)組元素a[n%10]置0。

當(dāng)循環(huán)結(jié)束后,再檢查a數(shù)組各元素(各個(gè)洞)的值,若其值仍為1,則兔子可能藏身于該洞中。


下面是程序流程圖:

下面是完整代碼:

#include <stdio.h>

int main()

{

int n=0, i=0, x=0;

int a[11];

for(i=0; i<11; i++)? /*設(shè)置數(shù)組初值*/

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++)? /*輸出結(jié)果*/

{

if(a[i])

printf("可能在第%d個(gè)洞\n", i);

}

return 0;

}


運(yùn)行結(jié)果:

可能在第2個(gè)洞

可能在第4個(gè)洞

可能在第7個(gè)洞

可能在第9個(gè)洞

自學(xué)C/C++不易,此路應(yīng)攜手前行。

如果你想跟著小編一起學(xué)編程的話!

可以來我專欄的C語言/C++編程學(xué)習(xí)基地,【點(diǎn)擊進(jìn)入】!

還有(源碼,零基礎(chǔ)教程,項(xiàng)目實(shí)戰(zhàn)教學(xué)視頻)【進(jìn)入領(lǐng)取】!? ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容