xiaozhao_19的专栏

努力开出"自主学习"的一方净土 QQ:690336783

zq ZID:xiaozhao_19
19874次访问,排名5790(2)好友7人,关注者12
爱好相对的自由
感悟平淡的生活
追求彼此的友谊
xiaozhao_19的文章
原创 73 篇
翻译 0 篇
转载 113 篇
评论 18 篇
xiaozhao_19的公告
欢迎你们,大家一起交流学习吧! 别忘了发表一些评论给予鼓励与指正! 千万别忘了发表一些你个人的评论,交流 一下。 感谢各位的光临。希望你能有所收获! QQ交流
xiaozhao_19的专栏
100.0%男性倾向,0.0%女性倾向
评点:您的文风冷静而镇定,言语间展现出强悍的思辨能力与恢宏的胸襟,一个男子汉的阳刚形象跃然纸上。
yodao | 博客男女
最近评论
孔:kqt007@163.com 请给一分代码,谢谢
你徒弟:你非常职业挖.强悍的
师傅啊:为什么要检索这个呢,有什么用啊?select @@version
你徒弟:看了之后,一个头2个大了,郁闷到
tina:我导师给的题目是《物流企业客服管理系统的开发与设计》,现在要写开题报告了,但是我不知道这个系统需要哪些模块,以前都没做过系统,只做过网站。所以比较头痛的。
我的邮箱:huajingfang@qq.com QQ:381835311
文章分类
收藏
    相册
    天地会总剁主
    ASP.NET/AJAX
    .NET Framework SDK
    .net卸载工具
    .NET编程网
    AJAX
    AJAX
    ASP.NET学习社区
    BugNET
    C# Corner
    C#开源资源大全
    CodeGuru
    CodeProject
    Discuz! 6.0.0
    Discuz!NT 2.0
    DotNet男孩社区
    MSDN
    Open Source in C#
    SharpToolbox
    VS2005专业教程网
    文档和教程
    步步为营VS 2008 + .NET 3.5系列文章索引
    编程爱好者BLOG
    网络大本营
    网页特效观止
    设计家园
    酷网动力
    CSS/XSL
    brainjar.com
    C-R-Team
    Css Globe
    CSS Mania
    CSS Templates
    css教程
    CSS教程
    CSS爱好者
    css社区
    Jenfy's blog
    lookom
    Smiley Cat Web Design
    Webjx.Com
    websbook
    XSLT
    中国建站网
    我爱CSS
    梦之都
    毅博客
    空间代码
    经典个人网站欣赏
    网站标准化
    蓝色理想
    FLASH/3D
    godson's blog
    Sandy 3D engine
    IC
    J2SE/J2EE
    j2ee行业网站
    XML世界
    IBM developerWorks 中国: XML
    Jenfy's blog
    XML Schema Part 0
    XML.ORG.CN
    XML系列教程 [荐学生]
    中国xml之家
    中国XML论坛
    博客们
    博客园
    麦子同学
    短信平台
    上海短信群发
    上海迅赛
    中国万网
    亿美满意通企业短信移动客户关系管理系统
    奥科企业短信
    时代互联企业短信平台
    讯越科技(SUNTECH)--移动商务专家(Business to Mobile)
    讯领快信
    金仓短信王
    工作需要
    .NET技术专家榜
    C#开源资源大全
    NET 控件与组件开发
    PPT资源之家
    中国.Net论坛
    中国MVP名录
    中文搜索引擎指南网
    全国高等学校精品课程建设工作
    慧都科技
    搜索吧
    无锡职业教育
    讲故事
    评书吧
    金苗网
    控件
    .NET、ASP.NET控件及源码大汇总
    排名
    http://top.chinaz.com/
    全球中文排行榜
    破解软件
    霏凡软件站
    软件测试
    51Testing软件测试网
    cstl.cn
    DotNetSlackers
    Test Matrix软件测试论坛
    一起测试网
    中国测试网
    中国软件测试在线
    中国软件测试时代
    软件测试培训圈
    素材
    IconsPedia
    Load Info
    ZOL壁纸库
    中国设计秀设计资源站
    图爸爸
    懒人图库
    抓图网
    站酷(ZCOOL)
    脚本之家
    视艺互连
    迷失免费资源吧
    网络盘
    文件分享存储专家
    本人的网络e盘
    纳米盘
    网上教程
    中国思科华为3Com网络技术门户社区
    中国电脑视频网
    网络解决方案
    网页专区
    5key’s blog
    ColorJack: Sphere
    七色风网页特效
    中国·萤火虫 软件实验室
    中国创意在线
    源码博客
    源码网
    网页教学网
    网页模板
    网页设计chinaitlab
    网页陶吧
    老鼠工作室
    艺术中国网
    蓝色理想
    蝶虫网页设计博客
    长沙网站建设
    我的其它博客
    天地会总剁主-博客园[正在建设中...]
    我的IT博客[正在建设中...]
    休闲时光
    《凤凰军事观察》 - 优酷视频
    bitfan(数字世界一凡人) 金旭亮
    国宝档案 - 专辑 - 优酷视频
    天涯 非常真人专题
    探索发现【专题节目】
    权威中文网站排行榜
    百家讲坛
    网友媒体与言论平台
    豆瓣
    迅雷看看--高清在线播放
    迷 宫古城热线小游戏
    铁血图片论坛
    学习视频
    asp.net 2 快速入门
    asp.net+模式
    C#学习教程
    CCNA
    delphi
    dreamweaver教程
    Excel2003教程
    J2EE视频教程
    php mysql
    PHP动态网页制作边用边学
    PHP教程
    主流IT认证网络技术专业站
    六个月成为网络专家(整理完毕)
    动感英语070101
    希赛2007年新版网络工程师
    数据结构【全】
    李阳英语学习秘诀
    网络工程师(整理完毕)
    色拉英语
    英语口语九百句
    英语学习的秘诀
    英语词汇立体记忆
    计算机维修
    软件设计师
    软件设计师教程
    软件设计师视频辅导教程
    优秀博客
    N.Design Studio
    Sawin软件研发之窗
    博客园
    吕震宇
    愚翁专栏 - 高级编程(c#)
    有空就要去的地方
    51CTO技术博客
    builder
    c# - CSDN tag
    CodeDN.Com 源码资源发布
    CodeProject
    CSDN_BLOG_TOP100总排行
    CSDN--dotnet频道
    c-sharpcorner
    Dotnet频道-中国IT实验室
    ITPUB技术门户
    MSDN 主页 (中国 - 简体中文)
    Open Source Software in C#
    SourceForge.net
    XDesigner图形软件工作室
    yagebu1983的专栏
    zwei1121的专栏
    三二一算法爱好者的家园 (RSS)
    上海.NET俱乐部
    专家列表
    专题 - ChinaAspx
    中国C#技术学习中心
    中国DotNet论坛首页
    中国IT实验室
    中国自学编程网
    信息学奥赛
    北京.NET俱乐部
    博客园 - 程序员的网上家园
    博客园博客列表
    好喜爱学习网
    幻想家的专栏
    开源地一
    开源地二
    微软中文技术论坛
    最新文章 - CSDN tag
    枕善居VB.NET源码博客
    水晶报表 - 编程实例
    深度搜索迷宫算法_怪盗KID
    游戏编程 - 爱国者黑客
    编程中国
    老童的BLOG
    虾米
    译言
    金旭亮的BLOG
    招聘
    无锡招聘网
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 迷宫算法收藏

    新一篇: 骑士旅行之迷宫算法 | 旧一篇: 随机迷宫生成算法浅析

     

     

    迷宫算法
    算法思想:findpath首先创建一个足够大的堆栈,然后对偏移量数组进行初始化,并在迷宫周围增加一圈障碍物。在while循环中,从当前位置here出发,按下列次序来选择下一个移动位置:向右、向下、向左、向上。如果能够移动到下一个位置,则将当前位置放入堆栈path,并移动到下一个位置。如果找不到下一个可移动的位置,则退到前一个位置。如果无法回退一个位置(即堆栈为空),则表明不存在通往出口路径。当回退至堆栈的顶部位置(next)时,可以重新选择另一个可能的相邻位置,这可利用nexthere来推算。注意herenext的一个邻居。对下一个移动位置选择可用以下代码来实现:
    If(next.row==here.row)//推算next可移动位置的个数
    Option=2+next.col-here.col;
    else option=3+next.row;
     
    Struct position{//位置
    int row;//
    Int col;//
    }position;
     
    Status FindPath()
    {//寻找从位置(11)到出口(m,m)的路径
    Position offset[4]
    Offset[0].row=0;offset[0].col=1;//向右
    Offset[1].row=1;offset[1].col=0;//向下
    Offset[2].row=0;offset[2].col=-1;//向左
    Offset[3].row=-1;offset[3].col=0;//向上
    //在迷宫周围增加一圈障碍物
    for(int i=0;i<=m+1;i++)
    {
    maze[0][i]=maze[m+1][i]=1;//底和顶
    maze[i][0]=maze[i][m+1]=1;//左和右
    }
    //优点:是程序不必处理边界条件,简化代码设计。
    Path=new Stack<Position>(m*m-1);
    Position here;
    here.row=1;
    here.col=1;
    maze[1][1]=1;//阻止返回入口
    int option=3;
    while(here.row!=m&&here.col!=m)//不是出口
    {//寻找并移动到一个相邻位置
    int r,c;
    while(option<=LastOption)
    {
    r=here.row+offset[option].row;//设置相邻格点
    c=here.col+offset[option].col;
    if(maze[r][c]==0) break;
    option++;
    }
    //找到一个相邻位置了吗?
    if(option<=LastOption)
    {//移动到maze[r][c]
    path->add(here);
    here.row=r;
    here.col=c;
    //设置障碍以阻止再次访问
    maze[r][c]=1;
    option=0;
    }
    else{//没有可用的相邻位置,回溯
    path->isEmpty() return OK;
    Position next;
    Path->Delete(next);//退回至栈顶位置next
    If(next.row==here.row)//推算next可移动位置的个数
    Option=2+next.col-here.col;
    else option=3+next.row;
    here=next;
    }
    return ERROR;
    }
    最短路径算法
    算法思想:程序首先检查start finish是否相同,如果相同,则路径长度为0,程序终止。否则设置一堵由封锁位置构成的“围墙”,把网格包围起来。然后对offset数组进行初始化,并在起始位置上标记2。借助于队列Q并从位置start开始,直到移动到下start相距为1的网格位置,然后移动到start相距为2的网格位置,不断继续下去,直到到达位置finish或者无法继续移动到下一个新的、空白的位置。在后一种情况下,将不存在到达位置finish的路径,而在前一种情况下,位置finish将得到一个相应的编号。
    如果到达了finish,则可以利用网格上的标号来重构路径。路径上的位置(start除外)均被存储在数组path之中。
     
    Status FindPath(Position start,Position finish,int &Pathlen,Position*path)
    {//寻找从startfinish的路径
    if((start.row==finish.row)&&(start.col==finish.col))
    {
    Pathlen=0;
    return OK;
    }
    Position offset[4]
    Offset[0].row=0;offset[0].col=1;//向右
    Offset[1].row=1;offset[1].col=0;//向下
    Offset[2].row=0;offset[2].col=-1;//向左
    Offset[3].row=-1;offset[3].col=0;//向上
    //在迷宫周围增加一圈障碍物
    for(int i=0;i<=m+1;i++)
    {
    maze[0][i]=maze[m+1][i]=1;//底和顶
    maze[i][0]=maze[i][m+1]=1;//左和右
    }
    int NumOfNbr=4;//一个网络个位置的相邻位置数
    Position here,nbr;
    here.row=start.row;
    here.col=start.col;
    Maze[start.row] [start.col]=2;//封锁初始位置
    LinkQueue<Position>Q;
    Do
    {//标记相邻位置
    for(int i=0;i< NumOfNbr;i++)
    {
    nbr.row=here.row+offset[option].row;
    nbr.col=here.col+offset[option].col; //设置相邻格点
    if(maze[nbr.row][ nbr.col]==0)//通路,且未被标记
    {
    maze[nbr.row][ nbr.col]=maze[here.row][ here.col]+1;
    if((nbr.row==finish.row)&&( nbr.col==finish.col)) break;//找到宝藏完成标记
    Q.add(nbr);
    }//if结束
    }//for结束
     
    //已到达finish吗?
    if((nbr.row==finish.row)&&( nbr.col==finish.col)) break;
     
    //未到达finish,可移动到nbr吗?
    If(Q.IsEmpty()) return ERROR;
    Q.delete(here);
    }while(OK)
     
    //构造路径
    PathLen=maze[finish.row][ finish.col]-2;
    Path=new Position[Pathlen];
     
    //回溯自finish
    here=finish;
    for(int j=pathLen-1;j>=0;j--)
    {
    path[j]=here;
    //寻找前一个位置
    for(int i=0;i< NumOfNbr;i++)
    {
    nbr.row=here.row+offset[option].row;
    nbr.col=here.col+offset[option].col;
    if(maze[nbr.row][ nbr.col]==j+2) break;
    }
    here=nbr;//移动到前一位置
    }
    return OK;
    }

     

    发表于 @ 2008年03月04日 15:26:00|评论(loading...)|编辑

    新一篇: 骑士旅行之迷宫算法 | 旧一篇: 随机迷宫生成算法浅析

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © xiaozhao_19