源码编程器编程猫抓老鼠(编程猫小游戏猫抓老鼠)
本文目录一览:
请教C语言编程高手帮助:猫捉老鼠问题
这其实就是迷宫问题的变体,猫最初的位置是入口,老鼠的位置就是出口,只不过这个出口处于不停的变动当中,但是老鼠的逃跑方式已经确定,所以只管让它走,猫捉老鼠就是一个求解迷宫路径的过程。比较麻烦的就猫永远抓不到老鼠的情况该如何判定,我们可以利用两个栈把猫和老鼠的路径都保存起来,并且标上序号,因为不用打印最短路径所以就不必出栈,每当猫或老鼠走一步的时候就遍历两个栈,如果猫和老鼠走到他们某一次都走过的地方那么就表明他们将永远在这段路径中循环,即猫永远抓不到老鼠。比如老鼠第10步走到(10,11),猫第十步走到(20,21),而老鼠第30步又走到(10,11),猫第30步也走到(20,21)就表明猫和老鼠会在这段路程中循环不息。我的思路就是这样吧,如果有什么不对请帮忙指点一下,代码有时间我也去打打,如果你做出来了不妨交流一下,呵呵!
c++编程猫吃老鼠的问题
#include stdio.h
void GetLastMouse(int nType, int nCount, int nMouse[], int nLastMouse)
{// nType--0表示吃的是奇数,1偶数;nCount--老鼠的总数;
// nMouse--所有老鼠的序号数组;nLastMouse最后一只老鼠
int nAllIndex = 0; // 总老鼠的索引
int nLifeIndex = 0; // 活着的老鼠的索引
int nLife = 0; // 活着的老鼠
int nLifeCount = 0; // 活着的老鼠总数
for(nAllIndex = 0; nAllIndex nCount; nAllIndex++)
{ // 获取所有活着的老鼠数量,保存最后一只活着的老鼠的索引
if (0 != nMouse[nAllIndex])
{
nLifeCount++;
nLife = nAllIndex;
}
}
if (1 == nLifeCount) // 如果活着的老鼠只剩一只了,返回
{
nLastMouse = nMouse[nLife];
return ;
}
for (nAllIndex = 0, nLifeIndex = 0; nAllIndex nCount nLifeIndex nLifeCount; nAllIndex++)
{
if (0 != nMouse[nAllIndex] ) // 还没被吃
{
if (nType == nLifeIndex % 2) // 并且处在被吃位置上
nMouse[nAllIndex] = 0; // 0表示被吃
nLifeIndex++;
}
}
GetLastMouse(nType, nCount, nMouse, nLastMouse); // 递运算
}
void main()
{
int nArray[] = {1,2,3,4,5,6,7,8,9,10};
int nLastMouse = 0; // 最后一只老鼠
GetLastMouse(0, 10, nArray, nLastMouse);
printf("最后一只老鼠的首次编号是:%d\n", nLastMouse);
}
C++编程 猫和老鼠
你可以看看这道题的解析,两题基本上一样
上面的是解析的地址