迷宫问题(提归)
int oldmap[N][N] ;//提归用的数组,用全局变量节约时间int yes=0;//*yes是判断是否找到路的标志,1找到,0没找到
int way[100][2],wayn=0;///way是显示路线用的,wayn是统计走了几个格子
void waycopy(int (*x)[N],int(*y)[N]);//为了8个方向的提归,把就迷宫拷贝给新数组
int findway(int (*x)[N],int i,int j);//自动探索函数
void main(void)
{
int map[N[N];
}
void waycopy(int (*oldmap)[N],int(*map[N])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
oldmap[i][j]=map[i][j];;
}
//////提归找路
int findway(int (*map)[N],int i,int j)
{
if (i==N-2&&j==n-2)///走到出口
{
yes=1;/// 标志为1 ,表示成功
return;
}
map[i][j]=1;//走过的地方变为1
waycopy(oldmap,map);///拷贝迷宫图
if(oldmap[i+1][j+1]==0&&!yes)///判断右下方是否可走
{
findway(oldmap,i++,j++);
if(yes)//如果到底出口,再把值赋给显示路线的way数组,也正是这个原因,所以具体路线是从最后开始保存
{
way[wayn][0]=i;
way[wayn++][1]=j;
return;
}
}
以下是 另外的 7个方向
开始的 时候 有
int way[100][2],wayn=0;///way是显示路线用的,wayn是统计走了几个格子
其中为什么 把 way[100][2]
置[100][2]??
[wayn]
而[wayn++]?
若把它改成 中国象棋的走法(把马放在任意位置,马能够无重复走完棋盘的每一个位置),怎么改?