5.21打卡

 

一、问题描述:

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

    }

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

    {

        if(a[i])

            printf("可能在第%d个洞\n",i);

    }

}

posted @ 2023-05-21 23:38  恋恋恋白  阅读(11)  评论(0)    收藏  举报