1樓:£牛牛
下面是一段delphi**:
演算法核心**,為增強演算法通用性,將窗體的乙個treeview和adoquery引用到區域性變數中,作為物件引用,不建立,也不釋放,相當於別名。
procedure ;
vari,j :integer;
leaflist,leaflistplus: tlist;
leaf,subnode: ttreenode;
tv: ttreeview;//引用窗體控制項。
qry: tadoquery;//引用窗體控制項。
begin/初始化。
leaflist:=;
leaflistplus:=;
tv:=tvw1;
qry:=qry1;
subnode:=,'月夜風箏(我)的公司');
處理。while > 0 do
for i:=0 to do
beginleaf:=leaflist[i];
if = 0 then
format('select code,name,belong from tb where belong = s'''
format('select code,name,belong from tb where belong = d''';
for j:= 0 to do
beginsubnode:=,'name').asstring);
;:=strtoint('code').asstring);
end;end;
end;/清理。
;end;說明:
用tlist型別模擬實現了廣度優先演算法的佇列--先進先出--實際上,本演算法不需要那麼嚴格,只要按批先進先出就行了。leaflist用於當前迴圈,leaflistplus用於下一輪迴圈,其中儲存的都是樹節點型別,以方便在treeview上直接插入子節點,就省了查詢父結點的演算法,節點的編號快取在節點的stateindex屬性中,編號可轉為整數型這是最方便的,如果編號不能保證可轉為整數,可以使用data屬性,可保萬無一失。
希望對你有幫助~
2樓:網友
事實上 。。寬搜是有模板的 具體↓
head:=0;tail:=1;que[1]:=初態 或 起點)repeat
inc(head);
if not(出現) then //判重。
begininc(tail);
que[tail]:=新擴充套件狀態);
end;until head>=tail;
不知道你能不能看懂。
我的寬搜一直是這個模板。
寬度優先搜尋演算法(pascal)
3樓:風雨飄搖
以走迷宮為例,就是一群人一起出發,然後遇到叉路口就分開走,只要有乙個人走出就把所有人帶走。
關於廣度優先搜尋演算法
4樓:網友
這個演算法是教程中很經典的,有很多例子和**。你可以好好研究!
如下是一段迷宮的最佳路徑求解演算法。
#include
#include
#include
using namespace std;
const int dx[4]=;
const int dy[4]=;
int maze[5][5],prev[5][5];
int que[32];
int qn;
void print(int x,int y)printf("(%d, %d)",x,y);
int main()
memset(prev,-1,sizeof(prev));
prev[0][0]=-2;
que[0]=0;
qn=1;for(i=0;i>3;
cy=que[i]&7;
for(j=0;j<4;j++)
return 0;}
深度優先搜尋遍歷和廣度優先搜尋的遍歷序列及具體步驟和原因
格子裡兮 1 2 3 4 表示1可達到2,達到3,達到4 2 1 3 5 3 1 2 4 5 6 4 1 3 6 5 2 3 6 6 3 4 5 廣度優先搜尋就是把每一行按照順序輸出,去掉重複的,即先看1,有1,2,3,4,然後看2,因為有3,4了,所以只要5,然後看3,以此類推。一行行來。深度優先...
什麼是非搶佔優先演算法,如果用非搶佔式短程序優先排程演算法,請問這5個程序的
劉陽升 理論 為照顧緊迫性作業,使之在進入系統後便獲得優先處理,引入了最高優先權優先 fpf 排程演算法。它分為兩種 一 非搶佔式優先權演算法 二 搶佔式優先權排程演算法。1.非搶佔式優先權演算法 系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序便一直執行下去,直至完成。2.搶佔式優先權排...