[Delphi (Object Pascal)] Pascal经典算法 - 挖地雷 →→→→→进入此内容的聊天室

来自 , 2020-10-18, 写在 Delphi (Object Pascal), 查看 228 次.
URL http://www.code666.cn/view/91394d0f
  1. {利用计算最佳连通分支算法即可求得}
  2. program miner;
  3. const
  4.   maxv=20;
  5. var
  6.   link,longlink:array[1..maxv,1..maxv] of boolean;
  7.   a:array[1..maxv,1..maxv] of 0..1;
  8.   f:array[1..maxv] of boolean;
  9.   w:array[1..maxv] of integer;
  10.   v,e,k,i,j,s,max,maxk:integer;
  11. procedure init;
  12.  begin
  13.   assign(input,'miner.in');
  14.   reset(input);
  15.   assign(output,'miner.out');
  16.   rewrite(output);
  17.   fillchar(longlink,sizeof(longlink),false);
  18.   fillchar(link,sizeof(link),false);
  19.   readln(v);
  20.   for i:=1 to v do
  21.     read(w[i]);
  22.   readln;
  23.   for i:=1 to v do
  24.     begin
  25.       for j:=i+1 to v do
  26.         begin
  27.           read(a[i,j]);
  28.           if a[i,j]=1
  29.              then begin
  30.                     link[i,j]:=true;
  31.                     link[j,i]:=true;
  32.                   end;
  33.         end;{for j}
  34.       readln;
  35.     end;{for i}
  36.     for i:=1 to v do      begin
  37.      for j:=1 to v do
  38.        write(link[i,j]:6);
  39.        writeln;end;
  40.  end;{init}
  41. procedure bibao;
  42.  begin
  43.   longlink:=link;
  44.   for k:=1 to v do
  45.     for i:=1 to v do
  46.       for j:=1 to v do
  47.         longlink[i,j]:=longlink[i,j] or (longlink[i,k] and longlink[k,j]);
  48.  end;{bibao}
  49. procedure dfs(i:integer);
  50.   begin
  51.     write(i,' ');
  52.     f[i]:=true;
  53.     for j:=1 to v do
  54.       if (not f[j]) and longlink[i,j]
  55.          then dfs(j);
  56.  end;{dfs}
  57. begin{main}
  58.  init;
  59.  bibao;
  60.  max:=0;
  61.  for i:=1 to v do
  62.    begin
  63.     s:=0;
  64.     for j:=1 to v do
  65.       if longlink[i,j]
  66.         then s:=s+w[j];
  67.    if s>max
  68.       then begin
  69.              max:=s;
  70.              maxk:=i;
  71.            end;
  72.   end;
  73.  fillchar(f,sizeof(f),false);
  74.  dfs(maxk);
  75.  writeln;
  76.  write(max);
  77.  close(input);
  78.  close(output);
  79. end.
  80. //delphi/7192

回复 "Pascal经典算法 - 挖地雷"

这儿你可以回复上面这条便签

captcha