資料結構上機時發現有乙個優化馬踏棋盤的方法。
僅適用於優化求解乙個(或少數),對於求所有解時間不變。
即dfs查詢路徑時優先選擇孫節點少的子節點。
下面附上**。
**:
#include #include #include #include using namespace std;
struct node
;int map[10][10],vis[10][10],borad[10][10][10],path[100][2],weight[10][10],flag=0;
//8個方向
int dx[8]=;
int dy[8]=;
//按照權值排序
bool cmp(node a1,node a2)
//標記,之後直接結束所有函式
flag=1;
return;
} //找出子節點的
int sum=0;
for (int i=0;i<8;i++) }
//按照權值從小到大排序
sort(a,a+sum,cmp);
for (int i=0;i}int main()
馬踏棋盤之貪心演算法優化
問題描述 曾經用簡單的深度優先搜尋方法 遞迴的形式對馬踏棋盤進行搜尋,執行效率不甚理想。部落格見馬踏棋盤之遞迴實現 所以現在用貪心演算法將其優化了一下。問題解析 主要的思想沒有變,還是用深度優先搜尋,只是在選下乙個結點的時候做了貪心演算法優化,其思路如下 從起始點開始,根據 馬 的走法,它的下一步的...
馬踏棋盤及其優化
在8 8的西洋棋棋盤中的任何乙個位置,放置乙個馬 棋子 使其按照馬在西洋棋中的規則 走日 進行移動,求其中的乙個解。這其實是乙個深度優先搜尋的問題,深度優先搜尋一般使用遞迴實現,在這裡,為了學習,使用我們更不熟悉的棧來操作。1.給定乙個起點,將起點入棧,步數step 1。2.在map陣列中的該位置的...
馬踏棋盤python 馬踏棋盤python實現
import collections import random class checkerboard object 初始化棋盤 def init self,len self.len len self.position has gone set def init checkerboard self ...