使用迴圈建立棋盤與權值棋盤(權值為該位置可走的位置數量)
將當前步數寫入棋盤陣列中
開始探測下一步該走的位置, 分別測試八個方向
對可走位置進行查詢權值,將權值最少的作為下一步的位置(每次都將步數最少的可走位置作為下一步的位置即貪心的體現)
迴圈2~4。
//馬踏棋盤---貪心題解
#include
#include
#define ok 1
#define true 1
#define error 0
#define false 0
#define m 8
#define n 8
int direction[2]
[9]=
,};//增量陣列
int pow[m]
[n];
int check[m]
[n],next[m]
[n];
//建立棋盤,初始為0
struct element //資料域
;typedef
struct lstack //鏈棧
*plstack;
typedef
struct check //定義棋盤內點的座標
check;
/*************棧函式****************/
intinitstack
(plstack &s)
//構造空棧
intstackempty
(plstack s)
//判斷棧是否為空
intpush
(plstack &s, element e)
//元素入棧
intpop
(plstack &s,element &e)
//元素出棧
else
return false;
}/********貪心權值函式********/
void
printf
(int p[m]
[n])
}void
initweight()
}}}void
setweight
(int x,
int y)
}void
unsetweight
(int x,
int y)}}
/*******馬踏棋盤函式*******/
intstep
(check start,plstack &h)}}
data.x=x;
//入棧
data.y=y;
data.d=t.d;
push
(h,data)
; x=t.x;
//座標更新
y=t.y;
i++;//步數增加
}return ok;
}int
main()
initweight()
;//建立權值棋盤
plstack h;
initstack
(h);
//構造空棧h
check start;
printf
("請輸入起始座標x y:");
scanf
("%d%d"
,&start.x,
&start.y)
;step
(start,h)
;printf
(check)
;return0;
}
資料結構 馬踏棋盤題解(貪心演算法)
使用迴圈建立棋盤與權值棋盤 權值為該位置可走的位置數量 將當前步數寫入棋盤陣列中 開始探測下一步該走的位置,分別測試八個方向 對可走位置進行查詢權值,將權值最少的作為下一步的位置 每次都將步數最少的可走位置作為下一步的位置即貪心的體現 迴圈2 4。馬踏棋盤 貪心題解 include include ...
貪心演算法 馬踏棋盤(C)
貪心演算法 又稱貪婪演算法 是指,在對 問題求解 時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的區域性 最優解。貪心演算法不是對所有問題都能得到整體 最優解,但對範圍相當廣泛的許多問題他能產生整體最優解或者是整體最優解的近似解。貪婪演算法是一種改進...
馬踏棋盤的貪心演算法
問題描述 馬的遍歷問題。在 方格的棋盤上,從任意指定方格出發,為馬尋找一條走遍棋盤每一格並且只經過一次的一條路徑。初步設計 首先這是乙個搜尋問題,運用深度優先搜尋進行求解。演算法如下 輸入初始位置座標x,y 步驟 c 如果c 64輸出乙個解,返回上一步驟c x,y c 計算 x,y 的八個方位的子結...