手机版
你好,游客 登录 注册
背景:
阅读新闻

C语言编程狼追兔子问题代码解析

[日期:2018-11-08] 来源:Linux社区  作者:Linux [字体: ]

问题描述

一只兔子躲进了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个洞

C语言编程狼追兔子问题代码解析

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-11/155247.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款