1 / 12
文档名称:

基本搜索算法之深度搜索.doc

格式:doc   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基本搜索算法之深度搜索.doc

上传人:hnet653 2015/9/7 文件大小:0 KB

下载得到文件列表

基本搜索算法之深度搜索.doc

相关文档

文档介绍

文档介绍:基本搜索算法之深度搜索
从一个简单题目开始。
。(1<=n<=9)
在这里我们可以对每一个元素编号,形成1,2,…,8,9个数字的全排列。我们用一个一维数组来处理,相当于有9个位置,每个位置可以放1到9,再进行重复性判断,即在每个位置放一个数字时判断它前面是否已经使用该数字。通过数组中元素值的变化,产生全排列。
下面给出非递归例程,其中,变量k是表示位置指针,数组x用来装每个位置的值。
const n=5;
var
x:array[1..10] of integer;
k:integer; {位置指针}
function try:boolean; {判重函数}
var i:integer;
begin
for i:=1 to k-1 do
if x[i]=x[k] then
begin try:=false;exit;end;
try:=true;
end;
procedure out; {输出过程}
var i:integer;
begin
for i:=1 to n do
write(x[i]);
writeln;
end;
begin
k:=1;
x[1]:=0;
while k>0 do
begin
inc(x[k]); {当前第k个位置中增加1}
if x[k]>n then {判断当前第k个位置中是否超界,超界指针后移一位}
dec(k)
else
if try then {判重}
begin
inc(k);x[k]:=0; {前进1位}
if k>n then {判断指针是否超界,决定一个排列是否完成,完成指针后移一位}
begin out;dec(k);end;
end;
end;
end.
下面是递归例程:
const n=5;
var
x:array[1..10] of integer;
function try(v1,k:integer):boolean; {判重函数,v1表示位置,k表示所放的值}
var i:integer;
begin
for i:=1 to v1-1 do
if x[i]=k then
begin try:=false;exit;end;
try:=true;
end;
procedure out; {输出过程}
var i:integer;
begin
for i:=1 to n do
write(x[i]);
writeln;
end;
procedure search(v:integer); {v表示第v个位置}
var i:integer;
begin
if v>n then begin out;exit;end; {若v超界,一个排列完成}
for i:=1 to n do {在第v个位置上分别放1到n}
if try(v,i) then {如果不重复,处理第v+1个位置}
begin x[v]:=i;search(v+1);end;
end;
begin
search(1);
end.
说明:使用非递归的好处是节约内存,当一些题目对内存消耗较大时,建议使用非递归方式;但使用递归方式在程序运行时间上要好一些,因为在每个节点扩展时,递归方式少一个范围超界判断。
例题一
简单的背包问题。
设有一个背包,可以放入的重量为s。现有n件物品,重量分别为均为正整数,从n件物品中挑选若干件,使得放入背包的重量之和正好为s。
分析:可以设定n个位置,每个位置只能放0和1,这样形成一个0和1可重复的排列,或者是产生一个n位的2进制数。
例程:
var
w:array[1..20] of integer;
x:array[1..20] of integer;
n:integer;
s:longint;
procedure init;
var i:integer;
begin
readln(n,s);
for i:=1 to n do
read(w[i]);
end;
function try(v1,k:integer):boolean; {判断目标函数,v1表示位置,k表示所放的值}
var i:integer;
s1:longint;
begin
s1:=w[k];
for i:=1 to v1-1 do
s1:=s1+x[i]*w[i];
if s1=s then
begin
for i:=1 to v1-1 do
if x[i]=0 then
write(w[i],' ');
writeln(w[k]);
end;
if s1>=s then

最近更新

最新人教版六年级下册数学期末测试卷附答案【.. 9页

新苏教版二年级上册科学期末考试试卷(培优) 5页

2025年经典的团结谚语集锦 5页

2025年经典电器的创意广告词大全 4页

2025年经典教师辞职申请书2025简单模板 10页

2025年经典幽默的小学六年级歇后语大全 6页

新人教版二年级下册-数学期末测试题【典优】 7页

教科版科学小学四年级下册第1单元《植物的生长.. 8页

教科版科学四年级下册第一单元《植物的生长变.. 10页

教科版科学四年级下册第1单元-植物的生长变化.. 6页

2025年纪念日高考作文素材 6页

教科版科学四年级上册期末测试卷含答案(考试直.. 10页

2025年纪律委员总结0字 41页

教科版科学五年级上册第二单元-地球表面的变化.. 4页

教科版科学二年级上册第一单元《我们的地球家.. 7页

2025年红楼梦读后感800字高二 10页

2025年红楼梦的心得的作文 15页

教科版科学一年级上册第一单元植物测试卷精品.. 7页

钢栈桥钢平台合同 18页

义务教育劳动课程标准(2022年版) 62页

康力电梯 扶梯质量机械检查要点培训 52页

高压物性取样和分析方法介绍精选PPT 89页

基于单片机的农业大棚温湿度监测系统设计 36页

列管式换热器设计说明书 23页

圆通祖师行谊记事 11页

SAP FICO 后台配置及前台操作-产品成本收集器.. 24页

张得计金口诀13套资料打包 2页

《韶光岛屿_明星受+造型师攻》.txt 97页