十一 回溯法框架

2021-04-09 03:16:21 字數 982 閱讀 5801

1. n皇后問題

procedure try(i:byte);

var j:byte;

begin

if i=n+1 then begin print;exit;end;

for j:=1 to n do

if a[i] and b[j+i] and c[j-i] then begin

x[i]:=j;

a[j]:=false; b[j+i]:=false; c[j-i]:=false;

try(i+1);

a[j]:=true; b[i+j]:=true; c[j-i]:=true;

end;

end;

2.hanoi tower  漢諾塔

h(n)=2*h(n-1)+1

h(1)=1

初始所有銅片都在a柱上

procedure hanoi(n,a,b,c:byte);

begin

if n=0 then exit;

hanoi(n-1,a,c,b);

write(n,』moved from』,a,』to』,c);

hanoi(n-1,b,a,c);

begin

if k=0 then exit;

for i:=1 to 3 do

for j:=1 to han[i,0] do

if h[i,j]=k then begin now:=i;nowp:=j; end;

if now<>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;

演算法學習(一)回溯法

回溯演算法實際上一個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就 回溯 返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,...

五大常用演算法之一 回溯法

熟悉演算法的朋友們都知道,我們經常使用五大演算法思想,分別是 1.貪心演算法 2.動態規劃 3.分治法 4.回溯法 5.分支限界法 今天,我們先來總結一下 回溯法 簡介 回溯法的思想如下 每次都沿著一條路去尋找結果,如果發生了無解的情況,則返回到上一個分叉口,然後選擇另一個選擇。再向下走到盡頭。回溯...