zoukankan      html  css  js  c++  java
  • 走迷宫游戏

    #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;
    }

  • 相关阅读:
    Ubuntu在命令行开启远程桌面
    Qt5编译项目出现GL/gl.h:No such file or directory错误
    硬盘录像机协议与技术汇总
    js判断IP字符串是否正确
    PHP获取原生POST数据
    hdu 5093 二分匹配
    hdu 4435 bfs+贪心
    hdu 4431 绝对值之和最小公式
    hdu 5073 推公式相邻质心转换
    hdu 3657 最小割(牛逼!!!!)总算理解了
  • 原文地址:https://www.cnblogs.com/chxuan/p/8232125.html
Copyright © 2011-2022 走看看