首页 > 试题广场 >

PROGRAM NOI_003; CONST N = 7

[填空题]
PROGRAM NOI_003;
CONST
  N = 7;
  M = 6;
VAR
  I, J, X0, Y0, X1, Y1, X2, Y2 : INTEGER;
  D : REAL;
  P : BOOLEAN;
  G : ARRAY[0..N, 0..M] OF 0..1;
FUNCTION DISP(X1, Y1, X2, Y2 : INTEGER) : REAL;
BEGIN
  DISP := SQRT((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2));
END;
BEGIN
  FOR I:=0 TO N DO      
    FOR J:=0 TO M DO G[I, J] := 0;
  READLN(X1, Y1, X2, Y2);
  G[X1, Y1] := 1;
  G[X2, Y2] := 1;
  P := TRUE;
  WHILE P DO
  BEGIN
    P := FALSE;
    D := DISP(X1, Y1, X2, Y2);
    X0 := X1;
    Y0 := Y1;
    FOR I:=4 TO N DO       
      FOR J:=0 TO M DO
      IF (D > DISP(I, J, X2, Y2)) AND (G[I, J] = 0) THEN
      BEGIN
        D := DISP(I, J, X2, Y2);
        X0 := I;
        Y0 := J;
      END;
    IF (X0 <> X1) OR (Y0 <> Y1) THEN
    BEGIN
      X1 := X0;
      Y1 := Y0;
      P := TRUE;
      G[X1, Y1] := 1;
    END;
    D := DISP(X1, Y1, X2, Y2);
    X0 := X2;
    Y0 := Y2;
    FOR I:=0 TO 3 DO          
      FOR J:=0 TO M DO
      IF (D < DISP(X1, Y1, I, J)) AND (G[I, J] = 0) THEN
      BEGIN
        D := DISP(X1, Y1, I, J);
        X0 := I;
        Y0 := J
      END;
    IF (X0 <> X2) OR (Y0 <> Y2) THEN
    BEGIN
      X2 := X0;
      Y2 := Y0;
      P := TRUE;
      G[X2, Y2] := 1;
    END;
  END;
  WRITELN(X1, Y1, X2, Y2)
END.


输入:    7   6   0    0
输出:1

这道题你会答吗?花几分钟告诉大家答案吧!