狐狸逮兔子(c/c++实现)

问题描述
围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:”可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二次隔2个洞(即6号洞)找,以后如此类推,次数不限.”但狐狸从早到晚进进出出了1000次,仍没有找到兔子.问:兔子究竟藏在那个洞里?

#include
using namespace std;
typedef int Sqlist[100];
//函数声明
void Initlist(Sqlist L, int n);//初始化兔子洞
void capture(Sqlist L, int n, int m);//捕捉兔子函数
void judge(Sqlist L, int n);//判断兔子位置
int main()
{
	int cavesize, time;
	cout << "请输入你要设置__个洞口:";
	cin >> cavesize;
	cout << "请输入狐狸寻找的次数:";
	cin >> time;
	Sqlist L;
	Initlist(L, cavesize);
	capture(L, cavesize, time);
	judge(L, cavesize);
	return 0;
}

void Initlist(Sqlist L, int n)
{
	int i;
	for (i = 1; i <= n; i++)
	{
		L[i] = 1;
	}
}

void capture(Sqlist L, int n, int m)
{
	int carry = 1, num = 0, i;
	for (i = 0; i < m; i++)
	{
		num = num + carry;
		if (num == n)L[n] = 0;
		else L[num % n] = 0;
		carry++;
	}
}

void judge(Sqlist L, int n)
{
	cout << "兔子可能的藏身之处为:";
	int i;
	for (i = 1; i <= n; i++)
	{
		if (L[i] == 1)
		{
			cout << i << "号洞" << " ";
		}
		else
		{
		    cout<<"无"<<endl<<"狐狸逮到了兔子";
		    break;
		}
	}
	cout << endl;
}

(PS:如果要设置的兔子洞超过100,需要重新修改代码)

你可能感兴趣的:(代码,数据结构)