馬踏棋盤的貪心優化

2021-08-28 19:14:01 字數 638 閱讀 6989

資料結構上機時發現有乙個優化馬踏棋盤的方法。

僅適用於優化求解乙個(或少數),對於求所有解時間不變。

即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 ...