算法草稿
来源:互联网 发布:安卓手机数据恢复apk 编辑:程序博客网 时间:2024/04/29 08:13
一.寻路
--3个任务local class = require "middleclass"Point = class('Point')function Point:initialize(x,y) self.x = x self.y = yendfunction Point:__tostring() return 'Point:[' .. tostring(self.x) .. ',' .. tostring(self.y) .. ']'end--从图中建造数据模型aStar = {--0表示可走--1表示不可走{0,0,0,0,0,0,0},{0,0,0,1,0,0,0},{0,0,0,1,0,0,0},{0,0,0,1,0,0,0},{0,0,0,0,0,0,0},}startPoint = Point(3,2)endPoint = Point(3,6)local openTab,closeTab = {},{}function openTab:__tostring() local ret = "" for k = 1 ,#self do ret = ret .. tostring(self[k]) end return retend setmetatable(openTab,openTab)function nextPos(aStar,point) --遍历上下左右添加到开启表 local tmp = {Point(point.x,point.y - 1),Point(point.x,point.y + 1), Point(point.x - 1 ,point.y ),Point(point.x + 1,point.y) } if point.x == endPoint.x and point.y == endPoint.y then --print("结束") openTab[#openTab + 1] = point if #openTab < 10 then print(openTab) end table.remove(openTab) return else for i = 1,4 do --处于边界内并且可走 if tmp[i].x >= 1 and tmp[i].x <= 5 and tmp[i].y >= 1 and tmp[i].y <= 7 and aStar[tmp[i].x][tmp[i].y] == 0 then aStar[point.x][point.y] = 1 --当前位置设置不可走 openTab[#openTab + 1] = point nextPos(aStar,tmp[i]) --选择下一个位置 table.remove(openTab) aStar[point.x][point.y] = 0 else -- 不可走的舍弃,裁枝 end end endendnextPos(aStar,startPoint)
阅读全文
0 0
- 算法[草稿]
- 算法草稿
- SMO算法草稿
- SIFT算法分析(草稿)
- ORB算法分析(草稿)
- ORB算法分析(草稿)
- ORB算法分析(草稿)
- SIFT算法分析(草稿)
- ORB算法分析(草稿)
- Brief算法分析(草稿)
- ORB算法分析(草稿)
- Brief算法分析(草稿)
- Brief算法分析(草稿)
- ORB算法分析(草稿)
- 草稿 -算法问题的历史。
- 全排列生成算法草稿
- 【绘图算法】Bresenham算法(草稿)
- 草稿
- Postfix邮件服务器搭建之软件安装与配置
- Spring实现AOP的多种方式
- iOS 懒加载一键生成工具(MacOS 应用)
- Android最简单的实现View拖拽跟随手指移动效果
- 代理和block的混用
- 算法草稿
- Spring 使用注解方式进行事务管理
- C# foreach循环较for循环的优势与劣势
- Neo4j CQL -(5)- CREATE+MATCH+RETURN命令
- Bootstrap-Table实现从服务器加载数据进行显示
- 一文入门VPN
- Android Studio创建的Android项目一般需要忽略的文件
- hadoop学习笔记:yarn框架资源相关配置
- HDU6156-Palindrome Function