资讯中心 Info
当前位置:酷叮猫 > 资讯中心 >
C语言-狼追兔子问题
发布日期:2020-08-27 阅读次数:0

问题描述

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

 

问题分析

首先定义一个数组a[11],其数组元素为a[1],a[2],a[3]……a[10],这10个数组元素分别表示10个洞,初值均置为1。

接着使用“穷举法”来找兔子,通过循环结构进行穷举,设最大寻找次数为1000次。由于洞只有10个,因此第n次查找对应第n%10个洞,如果在第n%10个洞中没有找到兔子,则将数组元素a[n%10]置0。

当循环结束后,再检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身于该洞中。

下面是程序流程图:

 

算法设计

理解了问题分析中的递归处理过程后,算法设计就非常简单了。只需要将公式转换成一个函数,然后用main()函数调用它就可以了。

 

下面是完整的代码:


#include

int age(int n)

{

    int x;

    if(n == 1)

        x=10;

    else

        x=age(n-1)+2;

    return x;

}

int main()

{

    int n;

    printf("请输入n值:");

    scanf("%d", &n);

    printf("第%d个人的年龄为%d\n", n, age(n));

    return 0;

}

运行结果:

可能在第2个洞

可能在第4个洞

可能在第7个洞

可能在第9个洞