📄 abc.text
字号:
#define MAX 20
#include "stdio.h"
int maze[MAX][MAX];
main()
{
int i,j;
printf("please input the number:");
scanf("%d\n",&i);
printf("please input the number:");
scanf("%d\n",&j);
if ((j<=0)||(j>=8)) j=3;
setmatrix(i,j);
outmatrix(i);
processor(i);
return(1);
}
#define MID 25000
int setmatrix(i,j)
int i,j;
{long rand,random(),middle;
int m,n,seed;
middle=MID+1000*j;
for( m=1;m<=i;m++) {
for(n=1;n<=i;n++) {
seed=random((m*m+j+n) % 10) % 10;
rand=random(seed);
if (rand>middle)
maze[m][n]=1;
else
maze[m][n]=0;
}
maze[0][m]=m;
maze[m][0]=m;
maze[i+1][m]=m;
maze[m][i+1]=m;
}
maze[1][1]=0;
maze[i][i]=0;
maze[i+1][0]=1;
maze[0][i+1]=1;
maze[0][0]=0;
maze[i+1][i+1]=0;
return(1);
}
#define MODE 32768
long random(seed)
int seed;
{long rand;
rand=(2053*seed+13849) % MODE;
return(rand);
}
int outmatrix(i)
int i;
{int m,n;
fprintf(stderr,"the matrix is:\n");
for (m=0;m<=i+1;m++)
{
for (n=0;n<=i+1;n++)
printf("%3d",maze[m][n]);
printf("\n");
}
return(0);
}
int move[8][2];
void setmove()
{move[0][0]=0;
move[0][1]=1;
move[1][0]=1;
move[1][1]=1;
move[2][0]=1;
move[2][1]=0;
move[3][0]=1;
move[3][1]=-1;
move[4][0]=0;
move[4][1]=-1;
move[5][0]=-1;
move[5][1]=-1;
move[6][0]=-1;
move[6][1]=0;
move[7][0]=-1;
move[7][1]=1;
}
int stack[MAX*MAX][2],mark[MAX][MAX],top;
int processor(i)
int i;
{ int dim,x,y,m,ok;
setmove();
stack[0][0]=0;
stack[0][1]=0;
mark[0][0]=1;
for(top=0;top<i*i;)
{ ok=0;
for(dim=0;dim<8;dim++)
{
x=stack[top][0]+move[dim][0];
y=stack[top][1]+move[dim][1];
if ((maze[x][y]==0)&&(mark[x][y]==0))
{ stack[++top][0]=x;
stack[top][1]=y;
mark[x][y]=1;
ok=1;
}
else
{ x-=move[dim][0];
y-=move[dim][1];
}
if ((x==i) &&(y==i))
{ fprintf(stderr,"the passable path is :");
outpath();
return(0);
}
else
if (ok)
break;}
if (ok==0)
if ((--top)==0)
{ fprintf(stderr,"the matrix is no way to go out :\n");
return(-1);
}
}
}
int outpath()
{int i;
for (i=0;i<top;i++) {
printf("[%d][%d]-->",stack[i][0],stack[i][1]);
if (i%4 == 0) printf("\n");
}
printf("[%d][%d]",stack[top][0],stack[top][1]);
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -