狼tuzi

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

下面是程序流程图:


下面是完整代码:

    
    
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int n=0, i=0, x=0;
  5. int a[11];
  6. for(i=0; i<11; i++) /*设置数组初值*/
  7. a[i]=1;
  8. for(i=0; i<1000; i++) /*穷举搜索*/
  9. {
  10. n+=(i+1);
  11. x=n%10;
  12. a[x]=0; /*未找到,置0*/
  13. }
  14. for(i=0; i<10; i++) /*输出结果*/
  15. {
  16. if(a[i])
  17. printf("可能在第%d个洞\n", i);
  18. }
  19. return 0;
  20. }
运行结果:
可能在第2个洞
可能在第4个洞
可能在第7个洞
可能在第9个洞
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值