词条信息

admin
超级管理员
版本创建者 发短消息   
简易百科旧版 >> C语言狼追兔子问题代码解析 >> 历史版本

最新历史版本 :C语言狼追兔子问题代码解析 返回词条



目录

问题描述回目录


  一只兔子躲进了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,则兔子可能藏身于该洞中。


下面是程序流程图:




下面是完整代码:


#include <stdio.h>

int main()

{

int n=0, i=0, x=0;

int a[11];

for(i=0; i<11; 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个洞


  可能在第4个洞


  可能在第7个洞


  可能在第9个洞