用栈实现二叉树先序遍历的非递归算法实践题用栈实现二叉树先序遍历的非递归算法实践题 用栈实现二叉树先序遍历的非递归算法实践题 一、数论算法 1(求两数的最大公约数 function gcd(a,b:integer):integer; begin if b=0 then gcd:=a else gcd:=gcd (b,a mod b); end ; 2(求两数的最小公倍数 function lcm(a,b:integer):integer; begin if a0 do inc(lcm,a); end; 3(素数的求法 A.小范围内判断一...
goal then begin {若未移到目标} Move(k-1,6-now-goal); {剩下的先移到没用的柱上} Writeln(k moved from now to goal); H[goal,h[goal,0]+1]:=h[now,nowp]; h[now,nowp]:=0; Inc(h[goal,0]); dec(h[now,0]); Move(k-1,goal); {剩下的移到目标上} End; 十二、DFS框架 NOIP2001 数的划分 procedure work(dep,pre,s:longint); {入口为work(1,1,n)} {dep为当前试放的第dep个数,pre为前一次试放的数,s为当前剩余可分的总数} var j:longint; begin if dep=n then begin if s>=pre then inc(r); exit; end; for j:=pre to s div 2 do work(dep+1,j,s-j); end; 类似: procedure try(dep:integer); var i:integer; begin if dep=k then begin if tot>=a[dep-1] then inc(sum); exit; end; for i:=a[dep-1] to tot div 2 do begin a[dep]:=i; dec(tot,i); try(dep+1); inc(tot,i); end; end;{try} 十三、BFS框架 IOI94 房间问题 head:=1; tail:=0; while tail=1) and (I<=L.len) then while j