A 演算法的C 實現

2021-07-04 21:40:51 字數 2792 閱讀 1441

實現部分:

標頭檔案:

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