标题:最近在学深搜和广搜
只看楼主
ywlb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-3-24
 问题点数:0 回复次数:2 
最近在学深搜和广搜
http://acm.fzu.

这道题用深搜要怎么写,哪位前辈能把核心的那部分写给偶瞧下吗
搜索更多相关主题的帖子: 在学 php 核心 acm problem 
2008-07-21 11:02
octillion
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2008-7-24
得分:0 
这题深搜,用回溯,每次搜到结尾之后更新一次最值。我用p的,刚写的,能通过样例。

程序代码:
program fz1301;
var n:integer;
    a:array[1..7,0..7] of integer;
    min:longint;
procedure init;
var i,j:integer;
begin
  fillchar(a,sizeof(a),0);
  for i:=1 to n do
    for j:=1 to n do
      read(a[i,j]);
  min:=10000000;
end;
function myadd(a,b:integer):integer;
begin
  exit((a+b-1) mod n+1);
end;
procedure update;
var mymax:integer;
    sum:array[1..7] of integer;
    i,j:integer;
begin
  fillchar(sum,sizeof(sum),0);
  for i:=1 to n do {columns}
    for j:=1 to n do {rows}
      inc(sum[i],a[j,myadd(a[j,0],i)]);
  mymax:=-1;
  for i:=1 to n do
    if sum[i]>mymax then mymax:=sum[i];
  if mymax<min then min:=mymax;
end;
procedure search(row:integer);
var i,j,k:integer;
    sum:array[1..7] of integer; {integer = longint}
begin
  if row=n+1 then
    update
  else
    begin
      for j:=0 to n-1 do
        begin
          a[row,0]:=j;
          search(row+1);
        end;
    end;
end;

begin
  read(n);
  while n<>-1 do
    begin
      init;
      search(1);
      writeln(min);
      readln(n);
    end;
end.
2008-07-27 01:55
octillion
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2008-7-24
得分:0 
你看  深搜的部分代码相当简洁。这题的主要问题是“更新”的思路。
2008-07-27 01:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-224643-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.217174 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved