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

📄 mg.c

📁 迷宫算法程序学习
💻 C
字号:
#include <stdio.h>
int i,j,x,y,n,m,bo;
FILE *t1;
int a[100][100],b[100][100];
void main()
{
t1=fopen("INPUT.TXT","r");
fscanf(t1,"%d %d",&n,&m);
for (i=1;i<=n;i++)
 for (j=1;j<=m;j++)
 {
  b[i][j]=-1;
  fscanf(t1,"%d",&a[i][j]);
 }
fclose(t1);
bo=1;b[n][m]=0;
while (bo>0)
{
bo=0;
for (i=n;i>0;i--)
 for (j=m;j>0;j--)
  if (b[i][j]>-1)
  {
   if (i>1)
    {
    if ((a[i-1][j]==0)&&((b[i-1][j]>(b[i][j]+1))||(b[i-1][j]==-1)))
     {
      b[i-1][j]=b[i][j]+1;bo=1;
     }
    }
   if (i<n)
    {
    if ((a[i+1][j]==0)&&((b[i+1][j]>(b[i][j]+1))||(b[i+1][j]==-1)))
     {
      b[i+1][j]=b[i][j]+1;bo=1;
     }
    }
   if (j>1)
    {
    if ((a[i][j-1]==0)&&((b[i][j-1]>(b[i][j]+1))||(b[i][j-1]==-1)))
     {
      b[i][j-1]=b[i][j]+1;bo=1;
     }
    }
   if (j<m)
    {
    if ((a[i][j+1]==0)&&((b[i][j+1]>(b[i][j]+1))||(b[i][j+1]==-1)))
     {
      b[i][j+1]=b[i][j]+1;bo=1;
     }
    }
  }
}
j=b[1][1];x=1;y=1;
if (j==-1) {printf("There is no way to leave!\n");return;};
printf("(%d,%d)",x,y);
for (i=1;i<=b[1][1];i++)
 {
  bo=0;
 if (x>1)
  {
   if ((a[x-1][y]==0)&&(b[x-1][y]==b[x][y]-1))
    {
    bo=1;
    x=x-1;
    printf("-(%d,%d)",x,y);
    }
  }
 if ((x<n)&&(bo==0))
  {
   if ((a[x+1][y]==0)&&(b[x+1][y]==b[x][y]-1))
    {                            
    bo=1;
    x=x+1;
    printf("-(%d,%d)",x,y);
    }
  }
 if ((y>1)&&(bo==0))
  {
   if ((a[x][y-1]==0)&&(b[x][y-1]==b[x][y]-1))
    {
    bo=1;
    y=y-1;
    printf("-(%d,%d)",x,y);
    }
  }
 if ((y<m)&&(bo==0))
  {
   if ((a[x][y+1]==0)&&(b[x][y+1]==b[x][y]-1))
    {
    bo=1;
    y=y+1;
    printf("-(%d,%d)",x,y);
    }
}
}
printf("\n");
}

⌨️ 快捷键说明

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