走迷宫游戏

#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,0,0,0,0,1},
	{1,0,0,0,1,0,0,0,0,1},
	{1,0,1,0,0,0,1,0,0,1},
	{1,0,1,1,1,0,1,1,0,1},
	{1,1,0,0,0,0,0,0,0,1},
	{1,1,1,1,1,1,1,1,1,1}
};
typedef struct{
	int i;
	int j;
	int di;
}Box;
typedef struct{
	Box data[1000];
	int top;
}StType;
bool mgpathint xi,int yi,int xe,int ye)
{
	int i,j,k,di,find;
	StType st;
	st.top=-1;
	st.top++;
	st.data[st.top].i=xi;
	st.data[st.top].j=yi;
	st.data[st.top].di=-1;
	mg[xi][yi]=-1;
	whilest.top>-1)
	{
      i=st.data[st.top].i;j=st.data[st.top].j;
      di=st.data[st.top].di;
	  ifi==xe&&j==ye)
	  {
         printf"迷宫路径最短路径如下:
");
		 fork=0;k<=st.top;k++)
		 {
			 printf"	%d,%d)",st.data[k].i,st.data[k].j);
			 ifk+1)%5==0)
				 printf"
");
		 }
		 printf"
");
		 return true;                                          //找到一条路径后返回true
	  }
	  find=0;
	  whiledi<4&&find==0)
	  {
		  di++;
		  switchdi)
		  {
		  case 0:
			  i=st.data[st.top].i-1;
			  j=st.data[st.top].j;
			  break;
		  case 1:
			  i=st.data[st.top].i;
			  j=st.data[st.top].j+1;
			  break;
		  case 2:
			  i=st.data[st.top].i+1;
			  j=st.data[st.top].j;
			  break;
		  case 3:
			  i=st.data[st.top].i;
			  j=st.data[st.top].j-1;
			  break;
		  }
		  ifmg[i][j]==0)
			  find=1;
	  }
	  iffind==1)
	  {
		  st.data[st.top].di=di;
		  st.top++;
		  st.data[st.top].i=i;
		  st.data[st.top].j=j;
		  st.data[st.top].di=-1;
		  mg[i][j]=-1;
	  }
	  else
	  {
		  mg[st.data[st.top].i][st.data[st.top].j]=0;
		  st.top--;
	  }
	}
    return false;
};


int  main)
{
	printf"迷宫如下图所示:
");
	forint i=0;i<10;i++)
	{
		forint j=0;j<10;j++)
			printf"%d ",mg[i][j]);
		printf"
");
	}
    if!mgpath1,1,8,8))
		printf"该迷宫无解!");
	return 0;
}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平