資源簡介
C#實現4種經典迷宮生成算法和迷宮尋路算法,4種經典的迷宮生成算法是:(1)使用并查集算法生成,(2)使用深度優先算法生成,(3)使用隨機算法生成,(4)使用遞歸切割算法,而迷宮尋路使用A*算法。

代碼片段和文件信息
using?System;
using?System.Collections;
using?System.Collections.Generic;
namespace?AlgorithmLib.Algorithm.Graph
{
????public?class?Graph
????{
????????private?Dictionary?pool;
????????private?Dictionary>?data;
????????public?Graph()
????????{
????????????pool?=?new?Dictionary();
????????????data?=?new?Dictionary>();
????????}
????????public?void?AddUndirectedEdge(char?u?char?v)
????????{
????????????AddDirectedEdge(u?v);
????????????AddDirectedEdge(v?u);
????????}
????????public?void?AddDirectedEdge(char?u?char?v)
????????{
????????????GraphNode?_u?=?NodeFromPool(u);
????????????GraphNode?_v?=?NodeFromPool(v);
????????????if?(data.ContainsKey(_u))
????????????{
????????????????if?(!data[_u].Contains(_v))
????????????????{
????????????????????data[_u].Add(_v);
????????????????}
????????????}
????????????else
????????????{
????????????????List?list?=?new?List();
????????????????list.Add(_v);
????????????????data.Add(_u?list);
????????????}
????????}
????????private?GraphNode?NodeFromPool(char?c)
????????{
????????????if?(!pool.ContainsKey(c))
????????????{
????????????????GraphNode?node?=?new?GraphNode(c);
????????????????pool.Add(c?node);
????????????}
????????????return?pool[c];
????????}
????????public?IEnumerable?V
????????{
????????????get
????????????{
????????????????foreach?(KeyValuePair>?kvp?in?data)
????????????????{
????????????????????yield?return?kvp.Key;
????????????????}
????????????}
????????}
????????public?GraphNode?GetNode(char?c)
????????{
????????????return?pool[c];
????????}
????????public?List?GetAdj(GraphNode?node)
????????{
????????????return?data[node];
????????}
????}
????public?class?GraphNode
????{
????????public?GraphNode(char?n)
????????{
????????????node?=?n;
????????????color?=?Colors.WHITE;
????????????d?=?int.MaxValue;
????????????f?=?int.MaxValue;
????????????pi?=?null;
????????}
????????public?char?node;
????????public?Colors?color;
????????public?int?d;
????????public?int?f;
????????public?GraphNode?pi;
????????public?override?int?GetHashCode()
????????{
????????????return?node.GetHashCode();
????????}
????????public?override?bool?Equals(object?obj)
????????{
????????????if?(obj?is?char)
????????????{
????????????????return?node.Equals(obj);
????????????}
????????????return?node?==?(obj?as?GraphNode).node;
????????}
????}
????public?enum?Colors
????{
????????WHITE
????????GRAY
????????BLACK
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????368??2018-11-27?15:20??Debuger\App.xaml
?????文件????????303??2018-11-27?15:20??Debuger\App.xaml.cs
?????文件??????28672??2018-12-05?16:46??Debuger\bin\Debug\AlgorithmLib.dll
?????文件?????105984??2018-12-05?16:46??Debuger\bin\Debug\AlgorithmLib.pdb
?????文件??????11264??2018-12-05?16:46??Debuger\bin\Debug\Debuger.exe
?????文件??????24064??2018-12-05?16:46??Debuger\bin\Debug\Debuger.pdb
?????文件??????22688??2018-12-05?15:52??Debuger\bin\Debug\Debuger.vshost.exe
?????文件????????490??2012-06-06?02:06??Debuger\bin\Debug\Debuger.vshost.exe.manifest
?????文件???????4570??2018-11-27?15:21??Debuger\Debuger.csproj
?????文件????????958??2018-12-05?14:47??Debuger\MainWindow.xaml
?????文件???????3031??2018-12-05?16:46??Debuger\MainWindow.xaml.cs
?????文件???????2317??2018-12-05?16:46??Debuger\obj\Debug\App.g.cs
?????文件???????2317??2018-12-05?16:46??Debuger\obj\Debug\App.g.i.cs
?????文件???????1250??2018-12-05?15:52??Debuger\obj\Debug\Debuger.csproj.FileListAbsolute.txt
?????文件????????954??2018-12-05?15:50??Debuger\obj\Debug\Debuger.csproj.GenerateResource.Cache
?????文件???????6274??2018-12-05?16:46??Debuger\obj\Debug\Debuger.csprojResolveAssemblyReference.cache
?????文件??????11264??2018-12-05?16:46??Debuger\obj\Debug\Debuger.exe
?????文件???????1630??2018-12-05?16:46??Debuger\obj\Debug\Debuger.g.resources
?????文件??????24064??2018-12-05?16:46??Debuger\obj\Debug\Debuger.pdb
?????文件????????180??2018-12-05?16:46??Debuger\obj\Debug\Debuger.Properties.Resources.resources
?????文件????????263??2018-12-05?16:46??Debuger\obj\Debug\Debuger_MarkupCompile.cache
?????文件????????262??2018-12-05?15:50??Debuger\obj\Debug\Debuger_MarkupCompile.i.cache
?????文件?????????80??2018-12-05?16:46??Debuger\obj\Debug\Debuger_MarkupCompile.lref
?????文件???????7073??2018-12-05?15:50??Debuger\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件???????1402??2018-12-05?16:46??Debuger\obj\Debug\MainWindow.baml
?????文件???????4585??2018-12-05?16:46??Debuger\obj\Debug\MainWindow.g.cs
?????文件???????4585??2018-12-05?16:46??Debuger\obj\Debug\MainWindow.g.i.cs
?????文件???????2267??2018-11-27?15:20??Debuger\Properties\AssemblyInfo.cs
?????文件???????2827??2018-11-27?15:20??Debuger\Properties\Resources.Designer.cs
?????文件???????5612??2018-11-27?15:20??Debuger\Properties\Resources.resx
............此處省略64個文件信息
- 上一篇:C#連接數據庫已封裝好
- 下一篇:AopSdk.dll
評論
共有 條評論