Thema: Delphi Haus vom Nikolaus algo

Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Haus vom Nikolaus algo

  Alt 11. Jan 2006, 22:03
So, habe mich nochmal damit beschäftigt.

Hier mal das übersetzte C-Programm von der oben erwähnten Seite...

Delphi-Quellcode:
program Nikolaus;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TZeichen = 0..1;
  TArray = array[0..4, 0..4] of TZeichen;

const
  mtrx:TArray = (
    (0, 1, 1, 1, 0),
    (1, 0, 1, 1, 0),
    (1, 1, 0, 1, 1),
    (1, 1, 1, 0, 1),
    (0, 0, 1, 1, 0)
  );

var
  zaehl:array[0..9] of integer;

procedure haus_rek(mtrx:TArray;
                   const start:integer;
                   const kn:integer;
                   const count:integer;
                   weg:string);
var i:integer;
    weg_neu:string;
begin
  for i:=0 to 4 do begin
    if mtrx[kn][i] = 1 then begin
      weg_neu:=weg + '->' + inttostr(i);
      if count = 7 then begin
        inc(zaehl[start]);
        if start = 0 then
       writeln(zaehl[start]:2,': ', weg_neu);
        exit;
      end;
      mtrx[kn][i]:=0;
      mtrx[i][kn]:=0;
      haus_rek(mtrx, start,i, count+1, weg_neu);
      mtrx[kn][i]:=1;
      mtrx[i][kn]:=1;
    end;
  end;
  inc(zaehl[start+5]);
end;

var
  i:integer;
  weg:string;
begin
  weg:='';
  for i:=0 to 9 do
    zaehl[i]:=0;

  writeln('Konstruktionsmoeglichkeiten vom Knoten 0 aus:');
  for i:=0 to 4 do begin
    weg:=inttostr(i);
    haus_rek(mtrx, i, i, 0, weg);
  end;

  for i:=0 to 4 do
    writeln('-> Von Knoten ', i,
            ' aus gibt es ', zaehl[i],
            ' Moeglichkeiten, ', zaehl[i+5],
            ' Sackgassen.');
end.
Das Ganze ist eine Konsolenanwendung.

MfG
Thorsten
  Mit Zitat antworten Zitat