資源簡介
1) 在國際象棋8×8棋盤中,馬從任意初始位置按規則進行移動,要求每個方格只進入一次,求出走遍棋盤上全部64個方格的路徑。
2) 求出馬的行走路線后,對應每條路線可以輸出一個類似棋盤的8×8的方陣,方陣中每個格的位置上顯示的是此位置在整條路線上的步數(從1到64的整數)。
3) 用直觀的界面演示尋找行走路線的回溯過程。

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Drawing;
using?System.Windows.Forms;
namespace?CHTrace
{
????class?CHTraceController
????{
????????//馬走的八個方向
????????static?Point[]?_directions?=?new?Point[]{new?Point(21)new?Point(2-1)new?Point(-21)new?Point(-2-1)
???????????new?Point(12)??new?Point(1-2)??new?Point(-12)??new?Point(-1-2)};
????????//棋盤的8*8個位置
????????Position[]?Positions?=?new?Position[8?8];
????????//是否求所有解
????????bool?_isNeedAll;
????????//是否優化
????????bool?_isOptimization;
????????//所有解的路徑
????????List>?_path?=?new?List>();
????????//求解的過程
????????List?_allPath?=?new?List();
????????int?_allPathCount?=?0;
????????public?int?AllPathCount
????????{
????????????get?{?return?_allPathCount;?}
????????????set?{?_allPathCount?=?value;?}
????????}
????????internal?List?AllPath
????????{
????????????get?{?return?_allPath;?}
????????????set?{?_allPath?=?value;?}
????????}
????????internal?List>?Path
????????{
????????????get?{?return?_path;?}
????????????set?{?_path?=?value;?}
????????}
?
????????public?CHTraceController(bool?isNeedAll?bool?isOpmition)
????????{
????????????_isOptimization?=?isOpmition;
????????????_isNeedAll?=?isNeedAll;
????????????for?(int?i?=?0;?i?8;?i++)
????????????{
????????????????for?(int?j?=?0;?j?8;?j++)
????????????????{
????????????????????int?weight?=?-8;//權值為出口的復數,初始為8
????????????????????if?(i?==?0?||?i?==?7)
????????????????????{
????????????????????????weight?+=?4;//如果在上下邊,則少了4個出口
????????????????????}?else?if?(i?==?1?||?i?==?6)
????????????????????{
????????????????????????weight?+=?2;//如果在次上下邊,則少了2個出口
????????????????????}
????????????????????if?(j?==?0?||?j?==?7)
????????????????????{
????????????????????????if?(i?==?0?||?i?==?7)
????????????????????????{
????????????????????????????weight?+=?2;//角點只有2個出口
????????????????????????}?else?if?(i?==?1?||?i?==?6)
????????????????????????{
????????????????????????????weight?+=?3;//次角點只有5個出口
????????????????????????}?else
????????????????????????{
????????????????????????????weight?+=?4;
????????????????????????}
????????????????????}?else?if?(j?==?1?||?j?==?6)
????????????????????{
????????????????????????if?(i?==?0?||?i?==?7?||?i?==?1?||?i?==?6)
????????????????????????{
????????????????????????????weight?+=?1;
????????????????????????}?else
????????????????????????????weight?+=?2;
????????????????????}
????????????????????Positions[i?j]?=?new?Position(i?j?0?false?weight);//設置初始權值和位置
????????????????}
????????????}
????????}
????????//根據起點求各路徑
????????internal?void?Sovle(int?startX?int?startY)
????????{
????????????linkedStack?curPath?=?new?linkedStack();//當前路徑
????????????linkedStack?StorePositions?=?new?linkedStack();//但回溯節點
????????????bool?needFindNextPosition?=?true;//是否需要從新尋
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3226??2010-05-08?18:06??HorseOverChessBoard\HorseOverChessBoard\ChessHouseTrace.csproj
?????文件??????15710??2010-05-09?16:22??HorseOverChessBoard\HorseOverChessBoard\CHTraceController.cs
?????文件????????308??2010-05-04?21:42??HorseOverChessBoard\HorseOverChessBoard\Data\IStackDS.cs
?????文件???????2277??2010-05-09?15:00??HorseOverChessBoard\HorseOverChessBoard\Data\li
?????文件???????1179??2010-05-04?21:42??HorseOverChessBoard\HorseOverChessBoard\Data\Node.cs
?????文件????????155??2010-05-04?21:51??HorseOverChessBoard\HorseOverChessBoard\Data\Path.cs
?????文件???????2184??2010-05-09?15:00??HorseOverChessBoard\HorseOverChessBoard\Data\Position.cs
?????文件???????1088??2010-05-09?15:00??HorseOverChessBoard\HorseOverChessBoard\Data\Step.cs
?????文件???????5899??2010-05-09?16:31??HorseOverChessBoard\HorseOverChessBoard\FmCHTrace.cs
?????文件???????6008??2010-05-09?16:31??HorseOverChessBoard\HorseOverChessBoard\FmCHTrace.resx
?????文件??????20054??2010-05-09?16:31??HorseOverChessBoard\HorseOverChessBoard\Form1.Designer.cs
?????文件????????260??2010-05-09?23:55??HorseOverChessBoard\HorseOverChessBoard\HorseOverChessBoard.gpState
?????文件????????919??2010-05-04?21:37??HorseOverChessBoard\HorseOverChessBoard\HorseOverChessBoard.sln
????..A..H.?????40448??2010-05-09?23:55??HorseOverChessBoard\HorseOverChessBoard\HorseOverChessBoard.suo
?????文件????????511??2010-05-04?21:42??HorseOverChessBoard\HorseOverChessBoard\Program.cs
?????文件???????1458??2009-04-02?16:53??HorseOverChessBoard\HorseOverChessBoard\Properties\AssemblyInfo.cs
?????目錄??????????0??2010-06-24?22:53??HorseOverChessBoard\HorseOverChessBoard\Data
?????目錄??????????0??2010-06-24?22:53??HorseOverChessBoard\HorseOverChessBoard\Properties
?????目錄??????????0??2010-06-24?22:53??HorseOverChessBoard\HorseOverChessBoard
?????目錄??????????0??2010-06-24?22:53??HorseOverChessBoard
-----------?---------??----------?-----??----
???????????????101684????????????????????20
評論
共有 條評論