A 初步實現

2021-04-21 00:28:23 字數 2209 閱讀 8396

由前幾天寫的acm**改了下,昨天下午寫的但再儲存最短路徑時有點問題,剛把最短路徑儲存改好了.加了個4方向還是8方向,在障礙物邊上是否拐角繞行.這裡面和//a* 障礙拐角 4方向8方向

#include 

#include 

#include 

#include 

using

namespace std;

int r,c;//地圖行列

int sr,sc,dr,dc;//起點 終點

int map[100][100];//0是障礙1是可行

bool turncorner=true;//是否繞過拐角

bool eight=true;//4方向和8方向擴充套件

struct node 

;vectoropenlist;

vectorcloselist;

vectorbestlist;

node child;

int abs(int a,int b)

bool dayu(node & l,node & r)

bool check(node value)

return

false;

}void init(node &start)

openlist.push_back(start);

if (!closelist.empty())

}void bestpath(node &best)

while (mudi.parent>-1)

}bool reach(int r,int c)

void generate(node &node,int r,int c)

}void kuozhan(node &node)

;if (reach(node.r-1,node.c))// 上 

else

if (reach(node.r,node.c+1))//右

else

if (reach(node.r+1,node.c))// 下

else

if (reach(node.r,node.c-1))// 左 

else

if (!eight)

if (!turncorner)

if (flag[0]&&reach(node.r-1,node.c-1))// 左上 

if (flag[1]&&reach(node.r-1,node.c+1))//右上

if (flag[2]&&reach(node.r+1,node.c+1))// 右下

if (flag[3]&&reach(node.r+1,node.c-1))// 左下 

}void findpath(int sr,int sc,int dr,int dc)

kuozhan(best);

}//沒路徑

cout<<"no way!/n";

}void showpath()

for (i=0;i

cout<}

}int main()

cin>>sr>>sc>>dr>>dc;

findpath(sr,sc,dr,dc);

showpath();

return 0;

}輸入:

10 10

1 1 1 1 1 0 0 0 0 0

1 2 0 0 1 1 1 1 1 0

1 1 1 0 1 0 0 0 1 1

0 0 1 0 1 1 1 0 1 1

1 1 1 0 0 0 0 1 1 1

1 1 0 0 1 1 1 1 1 1

1 1 1 0 1 1 1 0 0 0

0 0 1 0 0 0 2 0 1 1

1 1 1 1 1 0 0 0 1 1

1 1 1 1 1 1 1 1 1 1

1 1 7 6

輸出:17

1 8 8 8 8 0 0 0 0 0

1 2 0 0 8 8 8 8 8 0

1 1 1 0 1 0 0 0 8 1

0 0 1 0 1 1 1 0 8 1

1 1 1 0 0 0 0 8 8 1

1 1 0 0 1 1 8 8 1 1

1 1 1 0 1 1 8 0 0 0

0 0 1 0 0 0 8 0 1 1

1 1 1 1 1 0 0 0 1 1

1 1 1 1 1 1 1 1 1 1

初步實現GoQtTemplate

ifndef mainwindow h define mainwindow h include 新新增 include include include include include include 設定採集資料的間隔時間using namespace cv helper函式qpixmap mat2...

redux的初步實現

redux與vuex一致,在這裡由store index.js定義需求,通過dispatch將需求發給reducer,具體什麼時候發,由頁面 html vue jsx 來觸發 react與vue一樣,都存在父傳子 子傳父 兄弟元件之間的傳值,單純的頁面 之間傳值的實現方式需要掌握是肯定的,比如 父傳...

線性鍊錶初步實現

對於線性鍊錶的個人理解 鍊錶就是把乙個個節點連線在一起就成了鍊錶。書上說它包含指標域和資料域。我先隨隨便便寫乙個小煉表。struct nodea,b,c 三個結點然後在主函式裡面對這三個進行初始化 現在開始真正開始建立鍊錶了 帶頭節點 include h using namespace std st...