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

📄 迷宫规模函数.c

📁 解决数据结构中的迷宫问题
💻 C
字号:
//文件名:迷宫规模函数
//文件内容:迷宫坐标设定,迷宫大小设定,迷宫表示方法,迷宫的初始化,初始化后的输出,起点和终点的输入


//迷宫坐标定义
 typedef struct
 {
   int x;    // 行值 
   int y;    // 列值 
 }PosType;   // 迷宫坐标位置类型 

 //迷宫的规模
 #define MAX_LENGTH 23     // 设迷宫的最大行列为23 

 //迷宫表示方法
 typedef int MazeType[MAX_LENGTH+2][MAX_LENGTH+2];   // 迷宫数组类型[行][列],其中行和列都包含了围墙 

 // 全局变量 
 MazeType m;         // 迷宫数组 
 int x,y;            // 迷宫的行数,列数 
 PosType begin,end;  // 迷宫的入口坐标,出口坐标 

//输出迷宫
 void Print()
 { 
   int i,j;

   printf("围墙用#表示,可通用*表示,求得的迷宫通路用$表示\n");
   for(i=0; i<=x+1; i++)
   {
     for(j=0; j<=y+1; j++)
	 {
		 if(m[i][j]==0)
            printf("%3c",'#');  //如果不通则输出#
		 else 
		 {
			 if(m[i][j]>1)
			      printf("%3c",'$');  //如果是求得的迷宫解则输出$
		     else
				 printf("%3c",'*');   //如果可通则输出*
		 }
	 }
     printf("\n");
   }
 }//print()

 //输入迷宫的初试状态
 void Init()
 {
   int i,j; //循环控制变量
   int number; //接收用户输入的墙的总数
   PosType value;//接收用户输入的墙的坐标点

   
   do
   {
      printf("请输入迷宫的行数、列数,中间请用空格隔开:\n");  //提示用户输入信息
	  printf("***注意:行数和列数应控制在%d以内***\n",MAX_LENGTH);
      scanf("%d %d", &x, &y);

   }while(x<=0 || y<=0 || x>MAX_LENGTH || y>MAX_LENGTH);//却保输入值有效

   for(i=0; i<=y+1; i++)  // 定义周边值为0(外墙) 
   {
     m[0][i]=0;      // 行周边 
     m[x+1][i]=0;
   }
   for(i=1; i<=x; i++)
   {
     m[i][0]=0;     // 列周边 
     m[i][y+1]=0;
   }

   for(i=1; i<=x; i++)   // 定义除外墙,其余都是通道,初值为1 
     for(j=1; j<=y; j++)
       m[i][j]=1;  
	 
   printf("请输入迷宫内墙单元数:"); //由用户输入迷宫的初试状态
   scanf("%d", &number);

   if(number != 0)
       printf("请依次输入迷宫内墙每个单元的行数,列数,中间请用空格间隔:\n");
   for(i=1; i<=number; i++)
   {
	  
	   scanf("%d %d", &value.x, &value.y);
	   m[value.x][value.y]=0;    // 修改墙的值为0 

	   if(value.x<=0 || value.x>x || value.y<=0 || value.y>y)  //处理输入值不合法的情况
	   {
		   printf("您刚才输入的坐标不合法,请重新输入该坐标\n");
		   i--;
	   }

   }
   
   //输出初始化后的迷宫
   printf("迷宫结构如下:\n");
   Print();

   //提示用户输入迷宫起点和终点
   printf("请输入入口的行数,列数,中间用空格隔开:\n");
   scanf("%d %d",&begin.x,&begin.y);
   printf("请输入出口的行数,列数,中间用空格隔开:\n");
   scanf("%d %d",&end.x,&end.y);
 }

⌨️ 快捷键说明

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