狼追兔子
问题描述:
/*一只小兔子躲进了10个环形分布的洞中的一个。
狼在第一个洞中没有找到兔子,就隔一个洞,到第三个洞去找;
也没有找到,就隔两个洞,到第六个洞去找;
以后每次多一个洞去找小兔子……这样下去,
如果一直找不到兔子,请问兔子可能在哪个洞中?*/
思路分析:
1. 狼找洞的规律,可以采用递归算法,为f(n)=f(n-1)+n;
2. 初始时对每个洞进行标记,若狼找到洞,修改标记;
3.经过若干次寻找后,未被修改标记的洞即为兔子可能的藏身地;
代码明细:
#include<stdio.h>
int dong(int n)
{
if(n==1)
return 1;
return dong(n-1)+n;
}
int main()
{
int a[11];int i,s;
for(i=0;i<10;i++)
a[i]=1; //给所有洞做标记
for(i=0;i<100;i++)
{
s=dong(i+1)%10;
a[s]=0; //狼找到了洞,修改标记
if(s==0)
printf("狼在第%d次找到了第%d个洞\n",i+1,s+10);
else
printf("狼在第%d次找到了第%d个洞\n",i+1,s);
}
for(i=0;i<10;i++)
{if(a[i]==1)
printf("%d个洞为兔子藏身的地方\n",i); //标记未修改过的地方,为兔子藏身的地方
}
return 0;
}
运行效果: