genetic.pas

来自「Ulm大学2003-2004年竞赛题」· PAS 代码 · 共 70 行

PAS
70
字号
(* Problem   Genetic Code** Algorithm Backtracking** Runtime   O(3^n)** Author    Walter Guttmann** Date      12.03.2003*)program genetic;var f: Text;    s: array [0..8191] of Char;    i, n: Longint;function strncmp(i1, i2, l: Longint): Longint;begin  while l > 0 do begin    if s[i1] < s[i2] then begin      strncmp := -1;      exit    end else if s[i1] > s[i2] then begin      strncmp := 1;      exit    end;    i1 := i1 + 1;    i2 := i2 + 1;    l := l - 1  end;  strncmp := 0end;function isThue(e: Longint): Boolean;var len: Longint;begin  isThue := False;  for len := 1 to e div 2 do    if strncmp(e-len-len, e-len, len) = 0 then      exit;  isThue := True;end;function backtrack(e: Longint): Boolean;var ch: Char;begin  backtrack := True;  if e = 5000 then    exit;  for ch := 'N' to 'P' do begin    s[e] := ch;    if isThue(e) then      if backtrack(e+1) then        exit  end;  backtrack := Falseend;begin  backtrack(0);  Assign(f, 'genetic.in');  Reset(f);  Read(f, n);  while n <> 0 do begin    for i := 0 to n-1 do      Write(s[i]);    WriteLn();    Read(f, n)  end;  Close(f)end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?