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

问题描述
一只兔子躲进了10个环形分布的洞中的一个。狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找;也没有找到,就隔2个洞,到第6个洞去找;以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?

思路:
从题目信息可以看出,兔子数量为1,洞的数量为10,且在这些洞正好呈现环形,不由得让我在脑海里想起了数据结构与算法图解中循环部分的内容,也就是在暗示我们可以进行循环遍历搜索。
狼追兔子问题看穷举法应用_第1张图片

另外,狼的走向也有规律,第一次在第一个洞,第二次第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;
}

因此,我们得出,可能的情况有:
狼追兔子问题看穷举法应用_第2张图片

你可能感兴趣的:(穷举法cc#算法学习心路)