以下算法是一个迷宫的算法,在走迷宫过程中用到了堆栈,请理解以下算法,并将算法的实现过程、子函数的作用 20
#include"stdio.h"#include"stdlib.h"#definem4#definen4structstype{intx,y;}stack[400];i...
#include"stdio.h"
#include"stdlib.h"
#define m 4
#define n 4
struct stype
{int x,y;
}stack[400];
int mg[m+2][n+2];
int zx[9],zy[9];
void printlj(int TOP)
{int i;
for(i=1;i<=TOP;i++)
{printf("(%d,%d)",stack[i].x,stack[i].y);
}
}
void mglj()
{int i,j,x,y,top,find,v;
top=1;stack[1].x=1;stack[1].y=1;find=0; mg[1][1]=-1;
while(top>=1&&!find)
{x=stack[top].x; y=stack[top].y;
for(v=1;v<=8;v++)
{i=x+zx[v];
j=y+zy[v];
if(mg[i][j]==0)
{top++;
stack[top].x=i;
stack[top].y=j;
mg[i][j]=-1;
break;
}
if(v==8) top--;
}
if((stack[top].x ==m)&&(stack[top].y ==n))
{printlj(top);
find=1;
}
}
if(!find) printf("no way\n");
}
void main()
{int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&mg[i][j]);
for(i=0;i<=m+1;i++)
{mg[i][0]=1;mg[i][n+1]=1;}
for(j=0;j<=n+1;j++)
{mg[0][j]=1;mg[m+1][j]=1;}
zx[1]=-1;zx[2]=-1;zx[3]=0;zx[4]=1;zx[5]=1;zx[6]=1;zx[7]=0;zx[8]=-1;
zy[1]=0;zy[2]=1;zy[3]=1;zy[4]=1;zy[5]=0;zy[6]=-1;zy[7]=-1;zy[8]=-1;
mglj();
}
大家帮忙做一下,小弟明天就要交了 展开
#include"stdlib.h"
#define m 4
#define n 4
struct stype
{int x,y;
}stack[400];
int mg[m+2][n+2];
int zx[9],zy[9];
void printlj(int TOP)
{int i;
for(i=1;i<=TOP;i++)
{printf("(%d,%d)",stack[i].x,stack[i].y);
}
}
void mglj()
{int i,j,x,y,top,find,v;
top=1;stack[1].x=1;stack[1].y=1;find=0; mg[1][1]=-1;
while(top>=1&&!find)
{x=stack[top].x; y=stack[top].y;
for(v=1;v<=8;v++)
{i=x+zx[v];
j=y+zy[v];
if(mg[i][j]==0)
{top++;
stack[top].x=i;
stack[top].y=j;
mg[i][j]=-1;
break;
}
if(v==8) top--;
}
if((stack[top].x ==m)&&(stack[top].y ==n))
{printlj(top);
find=1;
}
}
if(!find) printf("no way\n");
}
void main()
{int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&mg[i][j]);
for(i=0;i<=m+1;i++)
{mg[i][0]=1;mg[i][n+1]=1;}
for(j=0;j<=n+1;j++)
{mg[0][j]=1;mg[m+1][j]=1;}
zx[1]=-1;zx[2]=-1;zx[3]=0;zx[4]=1;zx[5]=1;zx[6]=1;zx[7]=0;zx[8]=-1;
zy[1]=0;zy[2]=1;zy[3]=1;zy[4]=1;zy[5]=0;zy[6]=-1;zy[7]=-1;zy[8]=-1;
mglj();
}
大家帮忙做一下,小弟明天就要交了 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询