问题描述
一只兔子躲进了10个环形分布的洞中的一个。狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找;也没有找到,就隔2个洞,到第6个洞去找;以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?
思路:
从题目信息可以看出,兔子数量为1,洞的数量为10,且在这些洞正好呈现环形,不由得让我在脑海里想起了数据结构与算法图解中循环部分的内容,也就是在暗示我们可以进行循环遍历搜索。
另外,狼的走向也有规律,第一次在第一个洞,第二次第3个洞,第三次在第6个洞,很像斐波拉契序列中的知识应用。
最后,我们还需要注意一个问题,每次狼搜索结束,我们一定需要初始化数值,以便于下次重新搜索。
因此代码如下:
#include <stdio.h>
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;
}
因此,我们得出,可能的情况有:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。