合肥
合肥奥数网

合肥站
奥数网

信息学竞赛常用算法与策略:回溯(3)

合肥奥数网整理 2013-01-17 14:56:03

  3.2 回溯算法的递归实现

  由于回溯算法用一栈数组实现的,用到栈一般可用递归实现。

  上述例1的递归方法实现如下:

  program hh;

  const n=4;

  var i,k:integer;

  x:array[1..n] of integer;

  st:string[n];

  t:string[n];

  procedure input;

  var i:integer;

  begin

  write('Enter string=');readln(st);

  t:=st;

  end;

  function place(k:integer):boolean;

  var i:integer;

  begin

  place:=true;

  for i:=1 to k-1 do

  if x[i]=x[k]  then

  begin place:=false; break end ;

  end;

  procedure print;

  var i:integer;

  begin

  for i:=1 to n do write(t[x[i]]);

  writeln;readln;

  end;

  procedure try(k:integer);

  var i :integer;

  begin

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

  for i:=1 to n do

  begin

  x[k]:=i;

  if place(k) then try(k+1)

  end

  end;

  begin

  input;

  try(1);

  end.

首页 上一页 下一页 尾页

相关推荐

点击查看更多
重点初中
首页 导航