较好的深搜ppt课件搜索与回溯.pptVIP

  • 55
  • 0
  • 约7.69千字
  • 约 46页
  • 2018-07-02 发布于贵州
  • 举报
较好的深搜ppt课件搜索与回溯

搜索与回溯;;深度优先搜索;;;; for i:=1 to n do if not used[i] then //若i未出现过则在 第k个位置放i begin ans[k]:=i; used[i]:=true; //标记 dfs(k+1);//继续搜索 used[i]:=false;//回溯 end; end; begin read(n); dfs(1); end. ;Procedure search(k:integer); begin if 到目的地 then 输出解 ; exit; for I:=1 to 算符种数 do begin 保存结果 search(k+1); 恢复到保存结果之前的状态 end; end; ;例:设有A,B,C,D,E五人从事J1,J2,J3,J4,J5五项工作,每人只能从事一项,他们的效益如表所示: ;const data:array[1..5,1..5] of integer =((13,11,10,4,7),(13,10,10,8,5),(5,9,7,7,4), (15,12,10,11,5),(10,11,8,8,4)); var i,max:integer; g, f:array[1..5] of integer; p:array[1..5] of integer; ;procedure go(step,t:integer); var i:integer; begin if step5 then begin if tmax then begin max:=t; g:=f; end; exit; end; for i:=1 to 5 do if p[i]=0 then begin f[step]:=i; p[i]:=1; t:=t+data[step,i]; go(step+1,t); t:=t-data[step,i]; p[i]:=0; end; end;;begin max:=0; for i:=1 to 5 do p[i]:=0; go(1,0); writeln; for i:=1 to 5 do write(chr(64+i),:j,g[i], :3); writeln; writeln(supply:,max); end. ;学校放寒假时,信息学竞赛辅导教师有A,B,C,D,E五本书,要分给参加培训的张、王,刘、孙、李五位学生,每人只能一本书。教师事先让每个人将自己喜爱的书填写在如下的表中。然后根据他们填写的表来分配书本,希望设计一个程序帮助教师求出所有可能的分书方案,使每个学生都满意。;const like:array[1..5,1..5] of integer =((0,0,1,1,0),(1,1,0,0,1),(0,1,1,0,0),(0,0,0,1,0),(0,1,0,0,1)); name:array[1..5] of string=(zhang,wang,liu,sun,li); var p,f:array[1..5] of integer; t:integer; procedure print; var i:integer; begin for i:=1 to 5 do write(name[i],:,chr(64+f[i]), ); writeln; end; ;procedure try(step:integer); var i:integer; begin for i:=1 to 5 do if (p[i]=0) and (like[step,i]0) then begin f[step]:=i;

文档评论(0)

1亿VIP精品文档

相关文档