狼追兔子问题

狼追兔子

问题描述:

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



}

运行效果:

猜你喜欢

转载自blog.csdn.net/qq_41911158/article/details/86561222