roat4.pas

来自「This ar the basic programs that i did in」· PAS 代码 · 共 58 行

PAS
58
字号
program dame;
type stiva=array[1..25] of integer;
var st:stiva;
    n,k:integer;
    as,ev:boolean;
 procedure init(var st:stiva;k:integer);
 begin
 st[k]:=0;
 end;
 procedure succesor(var as:boolean;var st:stiva;k:integer);
 begin
 if st[k]<n then
            begin
            st[k]:=st[k]+1;
            as:=true;
            end
 else as:=false;
 end;
 procedure valid(var ev:boolean;st:stiva;k:integer);
           var i:integer;
 begin
 ev:=true;
 for i:=1 to k-1 do
                 begin
                 if st[i]=st[k] then ev:=false;
                 if abs(st[k]-st[i])=abs(k-i) then ev:=false
                 end;
 end;
 function solutie(st:stiva;k:integer):boolean;
 begin
 solutie:=(n=k);
 end;
 procedure tipar;
           var i:integer;
 begin
 for i:=1 to n do
 write(st[i],' ');
 writeln;
 end;
begin
write('n=');
readln(n);
k:=1;
init(st,k);
while k>0 do
      begin
        repeat
        succesor(as,st,k);
        valid(ev,st,k);
        until (not as) or (as and ev);
      if as then if solutie(st,k) then tipar
                 else begin
                      k:=k+1;
                      init(st,k);
                      end
      else k:=k-1;
      end;
end.

⌨️ 快捷键说明

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