• 走迷宫游戏


    #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 mgpath(int 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;
    	while(st.top>-1)
    	{
          i=st.data[st.top].i;j=st.data[st.top].j;
          di=st.data[st.top].di;
    	  if(i==xe&&j==ye)
    	  {
             printf("迷宫路径最短路径如下:
    ");
    		 for(k=0;k<=st.top;k++)
    		 {
    			 printf("	(%d,%d)",st.data[k].i,st.data[k].j);
    			 if((k+1)%5==0)
    				 printf("
    ");
    		 }
    		 printf("
    ");
    		 return true;                                          //找到一条路径后返回true
    	  }
    	  find=0;
    	  while(di<4&&find==0)
    	  {
    		  di++;
    		  switch(di)
    		  {
    		  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;
    		  }
    		  if(mg[i][j]==0)
    			  find=1;
    	  }
    	  if(find==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("迷宫如下图所示:
    ");
    	for(int i=0;i<10;i++)
    	{
    		for(int j=0;j<10;j++)
    			printf("%d ",mg[i][j]);
    		printf("
    ");
    	}
        if(!mgpath(1,1,8,8))
    		printf("该迷宫无解!");
    	return 0;
    }

  • 相关阅读:
    struct与class的区别
    C#锐利体验第五讲 构造器与析构器(转)
    Sort Table
    WinXP(NTFS分区下)Vista系统文件的删除方法
    关于上海居住证我们不得不说的实情!(转)
    让你眼花缭乱的JS代码~~
    ASP的URL重写技术(IIS的ISAPI)[转]
    JS实现从照片中裁切自已的肖像
    C#锐利体验第二讲 C#语言基础介绍(转)
    装箱和拆箱
  • 原文地址:https://www.cnblogs.com/chxuan/p/8232125.html
Copyright © 2020-2023  润新知