A 演算法 c 實現

2021-07-25 21:43:49 字數 1664 閱讀 1590

最近舍友突然說起a*演算法 雖然之前看過 但是我發現自己記得不是很清楚了 而且從來沒去手動實現過 趁著這次就實現一下加深理解 去網上查了下原理 看了幾篇別人的實現 然後按自己理解綜合一下寫出來記錄一下(我參考那篇程式執行有好幾個問題,而且執行得出路徑也是不對的,不知道他有沒跑過的。)

astar.h

#ifndef astar_h

#define astar_h

#include

#include

#include

#include

#include

using

namespace

std;

typedef

struct node

node(int x,int y,node* father)

}node;

class astar;

#endif

astar.cpp

#include "stdafx.h"

#include "astar.h"

intmap[101][101] =

, ,,,

,,

};astar::astar()

astar::~astar()

void astar::search( node* startpos,node* endpos )

nextstep(current);

closelist.push_back(current);

openlist.erase(openlist.begin());

sort(openlist.begin(),openlist.end(),compare);

}}void astar::checkpoit( int x,int y,node* father,int g)

}else

}void astar::nextstep( node* current )

int astar::iscontains(vector

* nodelist, int x,int y )

}return -1;

}void astar::countghf( node* snode,node* enode,int g)

bool astar::compare( node* n1,node* n2 )

bool astar::unwalk( int x,int y)

void astar::printpath( node* current )

void astar::printmap()

printf("\n");

}}

main.h

#include "stdafx.h"

#include "astar.h"

using

namespace

std;

int _tmain(int argc, _tchar* argv)

這個是可以直接執行的 得出的路徑我仔細看過了 也是沒問題的

編輯下:這個寫法大的地圖會有效率問題 是因為容器頻繁刪除導致的大小重新分配導致的 你可以新增乙個輔助棧 然後像上面那樣容器排序 再按排序順序從最後乙個開始壓入棧 最後改為移除棧上第乙個元素 不修改容器的大小了

c 實現svm SVM演算法實現

前面我們介紹了svm演算法的原理,這裡通過python以及小例子來實現svm演算法。這裡主要介紹兩個例子,乙個例子通過調包實現svm,乙個例子通過程式設計實現。一 癌症資料集 資料來自國外某醫院癌症資料,資料量為100,劃分70條記錄用於訓練集,資料如下所示 圖中diagnosis result是癌...

c 實現rsa演算法 RSA演算法實現過程

rsa演算法是實現非對稱加密的一種演算法,其用到很多有關數論的內容,在此我們不多討論。而將目光聚焦於演算法的實現過程。rsa過程 第二步 計算n a b 61 53 3233 第三步 計算 a 1 b 1 60 52 3120 第四步 選擇與3120互質的乙個數e 17,這個e也就是我們的公鑰,需要...

SUNDAY 演算法 c 實現

public class sunday 實現sunday演算法 public int findchr string str,string sfind str length str.length fin length sfind.length while start fin length str le...