资源简介
详细描述见我的一篇博文
http://blog.csdn.net/davied9/article/details/51921723
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
/// 本程序主要的完成目标为:
/// 导入地图数据(2维矩阵,每个元素表示该位置的类型)
/// 0 可通行 1 墙面 2 起始点 3 终止点
/// 输出寻址结果(估价结果、寻址结果)
namespace PathSearch
{
class Program
{
///
/// 玩成地图寻址功能(A*逆向搜索),作为结果备份,所以完整抄录
///
///
static void Main(string[] args) // string 中仅含有一个有效参数,就是地图文件的文件名
{
Map mapRead;
if (1 == args.Length)
mapRead = new Map(args[0]);
else
return;
if(mapRead.empty)
{
System.Diagnostics.Debug.WriteLine(“PathSearch.Program.Main >>> File read FAILED!!!“);
return;
}
Coord2 beginNode = new Coord2(1 1);
Coord2 endNode = new Coord2(5 7);
if (!(mapRead.IsInMap(beginNode) && mapRead.IsInMap(endNode)))
{
System.Diagnostics.Debug.WriteLine(“PathSearch.Program.Main >>> Map-file is not available!!!“);
return;
}
Coord2 sizeMap = new Coord2(mapRead.Size());
List openList = new List();
MapData cost = new MapData(sizeMap costInitValue);
Coord2[] NSOffsets = new Coord2[8]
{
new Coord2(-1-1)new Coord2( 0-1)new Coord2( 1-1)
new Coord2(-1 0) new Coord2( 1 0)
new Coord2(-1 1)new Coord2( 0 1)new Coord2( 1 1)
};
int[] NSPrice = new int[8]
{
141014
10 10
141014
};
Coord2 currentNode = new Coord2(endNode);
cost[currentNode] = 0;
Coord2 checkNode = new Coord2();
openList.Add(currentNode);// 注意区别
int nodePrice = 0;
Coord2 minSpaceNode = new Coord2();
int minSpaceCost = 0; // 节点空间中估价最小的节点
while(0 != openList.Count)
{
openList.Remove(currentNode);
for(int ix_Space = 0; ix_Space < 8; ++ix_Space)
{
checkNode = currentNode + NSOffsets[ix_Space];
if (!mapRead.IsInMap(checkNode)) continue;
if (costInitValue != cost[checkNode] || mapRead.IsObs(checkNode)) continue;
nodePrice = NSPrice[ix_Space];
cost[checkNode] = cost[currentNode] + nodePrice;
if (beginNode == checkNode) goto search_tag;
openList.Add(new Coord2(checkNode));// 注意区别
}
minSpaceNode = openList.ElementAt(0);
minSpaceCost = cost[minSpaceNode];
foreach(Coord2 minCheckNode in openList)
{
if( cost[minCheckNode] < minSpaceCost)
{
minSpaceNode = minCheckNode;
minSpaceCost = cost[minSpaceNode];
}
}
currentNode = minSpaceNode;
}
search_tag:
if (costInitValue == cost[beginNode])
{
System.Diagnostics.Debug.WriteLine(“PathSearch.Program.Main >>> Path NOT found!!!“);
return;
}
List pathList = new List();
currentNode = new Coord2(beginNode);
while (endNode != currentNode)
{
pathList.Add(new Coord2(currentNode));
minSpaceNode = currentNode;
minSpaceCost = cost[currentNode];
foreach(Coord2 offset in NSOffsets)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 193 2016-07-16 13:24 PathSearchPackages\Map.txt
文件 8555 2016-07-16 13:23 PathSearchPackages\Program.cs
文件 4606146 2016-07-16 11:40 PathSearchPackages\whole.jpg
目录 0 2016-07-16 13:25 PathSearchPackages
----------- --------- ---------- ----- ----
4614894 4
相关资源
- 基于c#的AE开发系统 城市查询信息系统
- 企业人事管理系统C#+sql server 2008
- 学生管理系统 C#
- 武汉大学 C#数据结构与算法
- protobuf转换Csharp工具,转换为C#文件
- C#旅游管理系统
- C#三层酒店管理系统(完整源码,可根
- 新闻发布系统源码
- 用C#做的简单的学生学籍管理系统课程
- 二手物品交易网站C#源码
- 超市进销存销售管理系统C#2.0+SQL ser
- C#下用GDAL对多景单幅影像进行图层叠
- C#网上商城购物系统源码
- 门禁卡读卡C#
- C#做的一个粗略的个人书籍管理系统
- 数据库课设-图书租赁管理系统C#+SQL完
- 学生信息管理系统(本系统的开发环
- C# 二维码名片
- 超市库存管理系统 C#源代码
- 人事工资管理系统C#+SQL Server 2008
- c#数字图像处理(平滑、修正、锐化、
- 几个不错的C#.NET做的WINDOWS窗体应用小
- asp.net c# 时尚性网上购物商城源码2.
- C#车牌识别系统车牌的定位分割加识别
- C#三层架构的MVC项目源码
-
Hands-On Typesc
ript for C# and .NET Core De - asp.net/c#小区物业管理系统222467
- 基于C#的人事工资管理系统
- C#+ArcEngine面周边点抽稀源码
- C#常用工具类代码集合Util自己工作总
评论
共有 条评论