狼追兔子问题看穷举法应用

问题描述
一只兔子躲进了10个环形分布的洞中的一个。狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找;也没有找到,就隔2个洞,到第6个洞去找;以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?
思路:
从题目信息可以看出,兔子数量为1,洞的数量为10,且在这些洞正好呈现环形,不由得让我在脑海里想起了数据结构与算法图解中循环部分的内容,也就是在暗示我们可以进行循环遍历搜索。
狼追兔子问题看穷举法应用
文章图片

另外,狼的走向也有规律,第一次在第一个洞,第二次第3个洞,第三次在第6个洞,很像斐波拉契序列中的知识应用。
最后,我们还需要注意一个问题,每次狼搜索结束,我们一定需要初始化数值,以便于下次重新搜索。
因此代码如下:

#include int main() { int n=0, i=0, x=0; int a[10]; for(i=0; i<=10; 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; }

【狼追兔子问题看穷举法应用】因此,我们得出,可能的情况有:
狼追兔子问题看穷举法应用
文章图片

    推荐阅读