實現部分:
標頭檔案:
[cpp]view plain
copy
/*a star 演算法的基礎處理
*/#ifndef _a_star_base_h_
#define _a_star_base_h_
#include "windows.h"
typedef
struct
_apoint apoint,*papoint;
enum
apointtype;
class
castarbase;
#endif
實現cpp檔案:
[cpp]view plain
copy
#include "stdafx.h"
#include "astarbase.h"
castarbase::castarbase()
castarbase::~castarbase()
bool
castarbase::create(
char
* pdatearr,
intnwidth,
intnheight )
else
if( pdatearr[y*m_napointarrwidth+x] ==
'1')
else
if( pdatearr[y*m_napointarrwidth+x] ==
's')
else
if( pdatearr[y*m_napointarrwidth+x] ==
'e')
else
} } return
true;
} void
castarbase::setstartpoint(
intx,
inty )
} void
castarbase::setendpoint(
intx,
inty )
} void
castarbase::setcurrent(
intx,
inty )
} void
castarbase::setopened(
intx,
inty )
} void
castarbase::setclosed(
intx,
inty )
} void
castarbase::printchararr()
printf("\r\n"
);
} printf("\r\n"
);
} }
papoint castarbase::calcnextpoint( papoint ptcalc )
intx = ptcalc->x;
inty = ptcalc->y;
intdx = m_pendpoint->x;
intdy = m_pendpoint->y;
intxmin = x,ymin = y,vmin = 0;
// 最優步驟的座標和值
// 判斷是否已經到了最終的位置
if( (x==dx && abs(y-dy)==1) || (y==dy && abs(x-dx)==1) )
// 上
if( m_papointarr[(x+0)+m_napointarrwidth*(y-1)].type == apt_opened && y>0)
else
} } // 下
if( m_papointarr[(x+0)+m_napointarrwidth*(y+1)].type == apt_opened && y
else
} } // 左
if( m_papointarr[(x-1)+m_napointarrwidth*y].type == apt_opened && x>0)
else
} } // 右
if( m_papointarr[(x+1)+m_napointarrwidth*y].type == apt_opened && x
else
} } // 如果有最優點則迭代,則否就返回null
if( vmin )
return
papoint;
}else
}
測試檔案:
[cpp]view plain
copy
// astarmath.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include "astarbase.h"
castarbase astarbase;
int_tmain(
intargc, _tchar* argv)
; astarbase.create(&pbuff[0][0],7,5);
astarbase.printchararr();
papoint ppoint = astarbase.calcnextpoint(null);
if( ppoint == null )
else
getchar();
return
0;
}
A 演算法 c 實現
最近舍友突然說起a 演算法 雖然之前看過 但是我發現自己記得不是很清楚了 而且從來沒去手動實現過 趁著這次就實現一下加深理解 去網上查了下原理 看了幾篇別人的實現 然後按自己理解綜合一下寫出來記錄一下 我參考那篇程式執行有好幾個問題,而且執行得出路徑也是不對的,不知道他有沒跑過的。astar.h i...
c 排序演算法的實現
c 排序演算法的實現 一 氣泡排序 bubble using system namespace bubblesorter end if end for j end while end viod sort end class public class mainclass bubblesorter sh...
C 實現的排序演算法
1 選擇排序 選擇排序 class selectionsorter int t arr min arr min arr i arr i t static void main string args selectionsorter s new selectionsorter s.sort array ...