设迷宫中数组的元素为1表示该点道路主的阻塞,为0表示可通。
设maze[1][1]为入口,maze[m][n]为出口。
在maze[1][1]和maze[m][n]的元素值必为0。
在任意时刻,老鼠在迷宫中的位置可以用所在点的行下标与列下标(i,j)来表示,这样,老鼠在迷宫中的某点maze[i][j]时,其可能的运动方向有八个。
下图○+表示某时刻老鼠所在的位置(i,j),相邻的八个位置分别标以N、NE、E、SE、S、SW、W、NW(分别代表○+点的北、东北、东、东南、南、西南、西、西北方向);
同时,相对于(i,j),这八个相邻位置的坐标的值都可以计算出来。
但是,并非迷宫中的每一个点都有八个方向可走,四个角上就只有三个方向可供选择,边上只有五个方向可供选择。
为了不在算法中每次都去检查这些边界条件,在迷宫外面套上一圈,其元素值均为1。
2024/5/20 18:07:40 2KB 迷宫问题 八个方向 数据结构 c++
1
%本函数用深度优先遍历(回溯法)来求解迷宫的所有路径%maze:是迷宫矩阵,其中0表示可以去走的路%1表示障碍%2表示入口%3表示出径%5表示路径%02001%01101%01301%01001
2024/5/4 19:09:01 1KB Matlab 深度优先 回溯法 所有解
1
前面几日我重新实现了迷宫的自动生成方法,并且添加了迷宫自动寻路方法。
有了一个独立于GUI的迷宫库,我开始迫不及待地实现三维迷宫了!下面是我在开发迷宫程序中遇到的问题。
1、怎样将迷宫类的行和列映射到真实的三维坐标中?迷宫应该用哪个参考系来描述?其实我在制作的时候为了简化,将二维迷宫的左上角与三维的原点重合,二维迷宫的右对应三维的X轴正方向,迷宫的下对应Z轴的正方向。
2、迷宫的“上、下、左、右”在三维中应该叫做什么?在确定好迷宫的位置后,我们将迷宫的上对应Z轴的负半轴,下对应Z轴的正半轴,左对应X轴的负半轴,右对应Y轴的正半轴。
3、三维点绘制顺序以及OpenGL裁剪模式造成的一些面不可见问题。
这个问题是我在编写二维迷宫没有想到的。
主要是因为二维迷宫中描述墙是用一条直线,而到了三维则是一个面。
由于在OpenGL中有裁剪模式可以选择,我使用了glFrontFace(GL_CW);//顺时针的绘制为正面glEnable(GL_CULL_FACE);//剔除不是正面的面进行设定,也就是说,所有在摄像机看来是逆时针绘制的图形都无法显示。
因此我不得不用同样的顶点绘制两个面。
下面是相关的函数:voidDrawInnerWall(Point3F&p1,Point3F&p2,Point3F&p3,Point3F&p4){glTexCoord2f(0.0f,1.0f);glVertex3fv(p1);glTexCoord2f(1.0f,1.0f);glVertex3fv(p2);glTexCoord2f(1.0f,0.0f);glVertex3fv(p3);glTexCoord2f(0.0f,0.0f);glVertex3fv(p4);}voidDrawOuterWall(Point3F&p1,Point3F&p2,Point3F&p3,Point3F&p4){glTexCoord2f(1.0f,1.0f);glVertex3fv(p1);glTexCoord2f(0.0f,1.0f);glVertex3fv(p2);glTexCoord2f(0.0f,0.0f);glVertex3fv(p3);glTexCoord2f(1.0f,0.0f);glVertex3fv(p4);}在编写这些函数的时候尤其注意纹理坐标的绘制顺序。
可以在纸上绘制一个草图。
下面是我调用的代码:if(Cell_UpWall(cell)){DrawInnerWall(p8,p7,p3,p4);DrawOuterWall(p7,p8,p4,p3);}4、怎样设置阻挡?设置阻挡的基本原则还是先检测后执行。
首先我先尝试着执行走一步,再判断这一步是不是出现了越界问题。
如果出现了越界问题,那么不执行这一步,否则执行这一步。
为了不让我们无限地靠近墙,我设定了一个gap,即摄像机必须与墙保持gap的距离。
下面是我相关的代码:boolView3D::CanGo(Maze&maze,floatstep){staticfloatgap=m_CellSize.w/8.0f;//摄像机与墙最近不能超过的间隔constPoint3F&pos=m_Camera.Pos();Point3FtryPos;if(pos.y>0&&pos.y(row-1)*m_CellSize.w);if(
2023/9/28 16:29:52 737KB opengl 游戏 摄像机
1
本法度圭表标准是咱们小组总体到场电脑鼠竞赛的残缺参赛代码,内付Maze主函数的残缺流程图!
2023/4/15 5:03:13 181KB IEEE 电脑鼠走迷宫
1
数据挖掘算法算法目录18大DM算法包名 目录名 算法名AssociationAnalysis DataMining_Apriori Apriori-关联规则挖掘算法AssociationAnalysis DataMining_FPTree FPTree-频繁模式树算法BaggingAndBoosting DataMining_AdaBoost AdaBoost-装袋提升算法Classification DataMining_CART CART-分类回归树算法Classification DataMining_ID3 ID3-决策树分类算法Classification DataMining_KNN KNN-k最近邻算法工具类Classification DataMining_NaiveBayes NaiveBayes-朴素贝叶斯算法Clustering DataMining_BIRCH BIRCH-层次聚类算法Clustering DataMining_KMeans KMeans-K均值算法GraphMining DataMining_GSpan GSpan-频繁子图挖掘算法IntegratedMining DataMining_CBA CBA-基于关联规则的分类算法LinkMining DataMining_HITS HITS-链接分析算法LinkMining DataMining_PageRank PageRank-网页重要性/排名算法RoughSets DataMining_RoughSets RoughSets-粗糙集属性约简算法SequentialPatterns DataMining_GSP GSP-序列模式分析算法SequentialPatterns DataMining_PrefixSpan PrefixSpan-序列模式分析算法StatisticalLearning DataMining_EM EM-期望最大化算法StatisticalLearning DataMining_SVM SVM-支持向量机算法其他经典DM算法包名 目录名 算法名Others DataMining_ACO ACO-蚁群算法Others DataMining_BayesNetwork BayesNetwork-贝叶斯网络算法Others DataMining_CABDDCC CABDDCC-基于连通图的分裂聚类算法Others DataMining_Chameleon Chameleon-两阶段合并聚类算法Others DataMining_DBSCAN DBSCAN-基于密度的聚类算法Others DataMining_GA GA-遗传算法Others DataMining_GA_Maze GA_Maze-遗传算法在走迷宫游戏中的应用算法Others DataMining_KDTree KDTree-k维空间关键数据检索算法工具类Others DataMining_MSApriori MSApriori-基于多支持度的Apriori算法Others DataMining_RandomForest RandomForest-随机森林算法Others DataMining_TAN TAN-树型朴素贝叶斯算法Others DataMining_Viterbi Viterbi-维特比算法18大经典DM算法18大数据挖掘的经典算法以及代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面,后面都是相应算法的博文链接,希望能够协助大家学。
目前追加了其他的一些经典的DM算法,在others的包中涉及聚类,分类,图算法,搜索算等等,没有具体分类。
C4.5C4.5算法与ID3算法一样,都是数学分类算法,C4.5算法是ID3算法的一个改进。
ID3算法采用信息增益进行决策判断,而C4.5采用的是增益率。
详细介绍链接CARTCART算法的全称是分类回归树算法,他是一个二元分类,采用的是类似于熵的基尼指数作为分类决策,形成决策树后之后还要进行剪枝,我自己在实现整个算法的时候采用的是代价复杂度算法,详细介绍链接KNNK最近邻算法。
给定一些已经训练好的数据,输入一个新的测试数据点,计算包含于此测试数据点的最近的点的分类情况,哪个分类的类型占多数,则此测试点的分类与此相同,所以在这里,有的时候可以复制不同的分类点不同的权重。
近的点的权重大点,远的点自然就小点。
详细介绍链接NaiveBayes朴素贝叶斯算法。
朴素贝叶斯算法是贝叶斯算法里面一种比较简单的分类算法,用到了一个比较重要的贝叶斯定理,用一句简单的话概括就是条件概率的相互转换推导
2023/3/5 1:58:33 220KB 数据挖掘 18大 算法 DM
1
包括:最小覆盖问题,最大边权最小生成树,字符串频率,字典问题,装箱问题,整数字典,旋转变换问题,图的2着色,同构二叉树,条形图,套汇问题,素数问题,双回路,石子合并,嵌套箱,前缀二叉树,离线最小值,进制方程,简单路径,赋权有向道路,非递归遍历,二叉树最短路径biminp,多机调度,等价类划分,wire小鼠迷宫,wait服务最优次序,waits多处服务最优次序,tape程序最优存储,switch电路板布线,subsize子树问题,stacks车皮编序,,repeat最长重复子串,rail车皮排序,railpk最优平行轨道车皮排序,railkk有限转轨栈车皮排序,post邮局选址,poly实系数一元式,pattern模式匹配,pipe油井选址,net集成电路等价类,paren括号匹配,maze小鼠迷宫,matchall所有匹配,jose陈列,inver逆序表,image图元识别,i2p,hanoi,glist广义表,gap间隙字符串匹配,expr波兰表达式,equiv等价类划分,cyc回文问题,count串计数,class向量分类,circle平面几何,cata高精度组合数,bilca_0最近公共祖先下载同时也支持下我的博客吧,关注最新的代码吧http://blog.csdn.net/msl1121
2023/2/19 23:03:06 7.52MB 算法 数据结构 源码
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡