問題描述
一只兔子躲進(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)取】!? ?