📄 mg.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 + -