主题:怎么用回溯
wangqizhi90
[专家分:50] 发布于 2006-03-06 20:18:00
急急急急急急急急急急
回复列表 (共6个回复)
板凳
贺天行宝 [专家分:2300] 发布于 2006-03-06 21:04:00
21313 ??
就是在过程中再套用过程,比如
快排
procedure qsort(l,r:longint;var a:arr);
var x,i,j:longint;
begin
if l>=r then exit;
i:=l;j:=r;x:=a[i];
repeat
while (a[j]>=x)and(i<j) do dec(j);
if (a[j]<x)and(i<j) then begin a[i]:=a[j]; inc(i); end;
while (a[i]<=x)and(i<j) do inc(i);
if (a[i]>x)and(i<j) then begin a[j]:=a[i]; dec(j); end;
until i=j;
a[i]:=x;
qsort(l,i,a);qsort(i+1,r,a);
end;
3 楼
游侠UFO [专家分:1200] 发布于 2006-03-11 22:42:00
递归
4 楼
百无禁忌 [专家分:50] 发布于 2006-03-20 17:14:00
you are bc!
5 楼
百无禁忌 [专家分:50] 发布于 2006-03-20 17:17:00
procedure suan(i:integer);
begin
a[i]:=a[i]+1;
if i=5 then print{检查是否满足条件然后输出}
else suan(i+1);
if a[i]=5 then a[i]:=0;
end;
begin{主程序}
suan(1);
end.
6 楼
百无禁忌 [专家分:50] 发布于 2006-03-20 17:19:00
前面的少了东西,这是递归回溯
procedure suan(i:integer);
begin
repeat
a[i]:=a[i]+1;
if i=5 then print{检查是否满足条件然后输出}
else suan(i+1);
if a[i]=5 then a[i]:=0;
until (a[i]=0);
end;
begin{主程序}
suan(1);
end.
我来回复