【Daily Games——工具篇】:常见工具之Jira提交&日常学习迷宫算法

xiaoxiao2025-08-26  87

日常修改预制体与lua脚本,涉及问题:

界面调整,等以后那天有意义的bug再记录好了

日常习惯

学了个迷宫算法=.=参考https://blog.csdn.net/wz2292667460/article/details/78160815

求解一个解(非最优==可以想下为什么)

#include<stdio.h> #define r 4 #define c 4 //表示移动的四个方向 int Move[4][2]={         {0,1},         {1,0},         {-1,0},         {0,-1}     }; //表示迷宫 int m[r+2][c+2]={         {1,1,1,1,1,1},         {1,0,0,1,0,1},         {1,1,0,1,0,1},         {1,0,0,1,0,1},         {1,0,0,0,0,1},         {1,1,1,1,1,1}     }; //表示走过的路 int t[r+2][c+2]={0}; int Maze(int x,int y) {     //到达终点     if(x==1 && y==4)     {         printf("(%d,%d)-->",x,y);         return 1;     }     //往四个方向走     for(int i=0;i<4;i++)     {         int a=x+Move[i][0];         int b=y+Move[i][1];         //如果移动的位置不是墙,且木有走过         if(m[a][b]!=1 && t[a][b]!=1)         {             t[a][b]=1;//把该位置占             int flag=Maze(a,b);//继续往下走             //flag用来是区别到达终点,还是不符合往回走             if(flag)             {                 printf("(%d,%d)--->",x,y);                 return 1;             }         }     }     return 0; } int main(void) {        t[1][1]=1;     Maze(1,1);     return 0; }

显示所有解

#include<stdio.h> #define r 4 #define c 4 int Move[4][2]={         {0,1},         {1,0},         {-1,0},         {0,-1}     }; int m[r+2][c+2]={         {1,1,1,1,1,1},         {1,0,0,1,0,1},         {1,1,0,0,0,1},         {1,0,0,1,0,1},         {1,0,0,0,0,1},         {1,1,1,1,1,1}     }; int t[r+2][c+2]={0}; int s[r*c][2];//用栈,存放走过的路径 int top=-1;//栈顶指针 int cnt=0;//统计情况 void show() {     printf("%d:\n",++cnt);     for(int i=0;i<=top;i++)     {         printf("(%d,%d)-->",s[i][0],s[i][1]);     }     printf("\n"); } void Maze(int x,int y) {     int i,a,b;     if(x==1 && y==4)     {         show();         return;     }     for(i=0;i<4;i++)     {         a=x+Move[i][0];         b=y+Move[i][1];         if(m[a][b]!=1 && t[a][b]!=1)         {             t[a][b]=1;             s[++top][0]=a;             s[top][1]=b;             Maze(a,b);             t[a][b]=0;             top--;           }     } } int main(void) {        t[1][1]=1;     s[++top][0]=1;     s[top][1]=1;     Maze(1,1);     return 0; }

还有一种去除t数组的方法

m[a][b]=1; s[++top][0]=a; s[top][1]=b; Maze(a,b); m[a][b]=0; top--;  

所有数据可以存在数组里面,同样可以存到一个链表内,多个链表存到最优解中

 

typedef struct elem{ int now[2]; struct elem *nextstep; }Step; typedef struct node{ int allstep; Step *nextstep; struct node *next; }ElemSN;

 

多加班一天=.= 项目内一测ヾ(◍°∇°◍)ノ゙

转载请注明原文地址: https://www.6miu.com/read-5035274.html

最新回复(0)