C语言狼追兔子问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言狼追兔子问题

一只兔子躲进了10 个环形分布的洞的某一个,狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找,也没有找到,就隔两个洞,到第六个洞去找,以后每次多隔一个洞去找兔子……这样下去,结果一直找不到兔子,请问:兔子可能躲在哪个洞中?

算法思想

对于本实例中提到的问题,虽然是“兔子可能躲在哪个洞中”,但是在考虑算法时,需要知道的是狼会去哪个洞找兔子,狼第一次去的洞是第一个(表示为pos1),第二次去的是第三个(pos3),把它去的洞的代码用数字表示出来,可以推导出狼去的洞的代码是:pos(i+1)=pos(i)+i+1。

由题目可知,狼没有找到兔子,因此该算法会一直持续下去。除此之外,还需要注意的是,在10 个洞之后,比如狼去找第十五个洞,但第十五个洞是不存在的,因此我们用15 对10 求余,得到的数字才是洞的标示。

程序代码

1.#include

2.int main()

3.{

4.int i;

5.bool pos[10]={0};

6.int lang=0;

7.for(i=0;i<100;i++)

8.{

9. pos[lang]=true;

10. lang++;

11. lang+=i;

12. lang=lang%10;

13.}

14.for(i=0;i<10;i++)

15.if(!pos[i])

16.printf("兔子可能在第%d洞中\n",i+1);

17.return0;

18.}

调试运行结果

通过上面的算法分析,狼在找兔子的过程中,为了达到找到兔子的目的,同时为了设计需要,增加了循环次数,最终程序的结果如下所示:

相关文档
最新文档