⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mazemm.c

📁 用栈实现迷宫算法
💻 C
字号:
#include<stdio.h> 

int mg[10][10]={
    1,1,1,1,1,1,1,1,1,1,
	1,0,0,1,0,0,0,1,0,1,
	1,0,0,1,0,0,0,1,0,1,
	1,0,0,0,0,1,1,0,0,1,
	1,0,1,1,1,1,0,0,0,1,
	1,0,0,0,1,1,1,1,0,1,
	1,1,0,0,0,1,1,1,0,1,
	1,0,0,0,1,1,1,1,0,1,
	1,0,0,0,0,0,0,0,0,1,
	1,1,1,1,1,1,1,1,1,1
};

struct
{ int i;
  int j;
  int di;
}Stack[100];

int top=-1;

int main()
{
    int i,j,di,find,k;
    top++;
    Stack[top].i=1;
    Stack[top].j=1;
    Stack[top].di=-1;
    mg[1][1]=-1;   
    
    while(top>-1)  /*当栈非空时*/
    {  
        i=Stack[top].i;
        j=Stack[top].j;
        di=Stack[top].di;
        if(i==8&&j==8) /*到达出口*/ 
        {
            printf("迷宫路径如下:\n");
            for(k=0;k<=top;k++)
            {
                printf("(%d,%d)\t",Stack[k].i,Stack[k].j);
                if((k+1)%5==0)printf("\n");
            }
            /*printf("\n");*/
            return;
        } 
        find=0;
    while(di<4 && find==0)
    {
    di++;
    switch(di)
    {
        case 0:i=Stack[top].i-1;j=Stack[top].j;
            break;
        case 1:i=Stack[top].i;j=Stack[top].j+1;
            break;
        case 2:i=Stack[top].i+1;j=Stack[top].j;
            break;
        case 3:i=Stack[top].i;j=Stack[top].j-1;
            break;
    }
    if (mg[i][j]==0) 
    find=1;
    } 
if(find==1)
{Stack[top].di=di;
top++;
Stack[top].i=i;Stack[top].j=j;Stack[top].di=-1;
mg[i][j]=-1;
}
else
{mg[Stack[top].i][Stack[top].j]=0;
 top--;
}
} 
printf("没有路径:");
system("pause");
return 0;
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -