.


:




:

































 

 

 

 


2




..

, . . . , ( ), . , .

, . . , . "" "" , . ( ), .

, . . , . , , ( ) , .

, , , , , , . ( "") ( ) . , , LongInt. , , Double, " ".


N - , 1, 1, 2, 3, 5, 8,... , .

0 < N < 47.

N - .

[ ]

, , , . . , , .

:

Function F(X:integer):longint; Begin if (X = 1) or (X = 2) then F:= 1 else F:= F(X - 1) + F(X - 2) end;

- (, , 1015 ). , ? F(40) F(39) F(38). F(38) , , , F(39). , ( !) . , . , :

Var D: Array [1..50] of LongInt;

, . , ( , , ). - , , , , . ( , , , , , ):

Function F(X: integer): LongInt; Begin if D[X] = 0 then if (X = 1) or (X = 2) then D[X]:= 1 else D[X]:= F(x - 1) + F(x - 2); F:= D[X] End;

, , . ( , ) ( ). :

D[1]:= 1; D[2]:= 1; For i:= 3 to X do D[i]:= D[i-1] + D[i-2];

. , () . , . . , ( ): , , .

2


, N , , , . , 2. ( , 8- , 5-, 6- 7-.) "" .

0 < N < 31.

.

[ ]

X. X - 1, X - 2 X - 3. F(X), X , F(X) = F(X 1) + F(X 2) + F(X 3). : F(1) = 1, F(2) = 2 (), F(3) = 4 (3210, 320, 3-10, 30). . , , :

Function F(X: integer): longint; begin if D[X] = 0 then D[X]:= F(x-1) + F(x-2) + F(x-3); { X = 1..3, D[X] > 0 } F:= D[X] end;

.


Robots&Co . , , : , , . , , . Robots&Co , , K , , , , (X, Y). , , . , .

K, X Y (0 <= K <= 16, | X |, | Y | <= 16), .

.

: F(X, Y, Z) - Z, (X, Y). ,

Array [-16..16, -16..16, 0..16] of LongInt;

. . Z - 1 , , , . F (X, Y, 0) = 0, X Y , F (0, 0, 0) = 1. , , . . . , , . , ,

Type T1 = array[-16..16, -16..16] of LongInt; T2 = array [0..16] of ^T1; Var D: T2;

(, , , "-1"):

Function F(X, Y, Z: integer): longint; var s: longint; begin if D[Z]^[X, Y] = -1 then begin s:= 0; if X <> -16 then s:= s + F(X - 1, Y, Z - 1); if X <> 16 then s:= s + F(X + 1, Y, Z - 1); if Y <> -16 then s:= s + F(X, Y - 1, Z - 1); if Y <> 16 then s:= s + F(X, Y + 1, Z - 1); D[Z]^[X, Y]:= s end; F:= D[Z]^[X, Y] end;

, , , ( ). , , , - . , 2 31, - , . , , .. , .

for z:= 1 to k do begin Way2:= Way1; for i:= -16 to 16 do for j:= -16 to 16 do begin s:= 0; if i <> -16 then s:= s + Way2[i - 1, j]; if i <> 16 then s:= s + Way2[i + 1, j]; if j <> -16 then s:= s + Way2[i, j - 1]; if j <> 16 then s:= s + Way2[i, j + 1]; Way1[i, j]:= s end end;

, ( , 486SX). , , , , .


. , , . , , , . .

N .
N , N , .

.

[ ]

. . . . , ( F(X, Y)). , ( ). , F . :

Function F(x,y:integer):longint;begin if B[x, y] = 1 then if F(x-1, y) > F(x, y - 1) then B[x, y]:= F(x - 1, y) + A[x, y] else B[x, y]:= F(x, y - 1) + A[x, y]; F:= B[x, y]end;

. . , ( ). . , , , , .

. ( ) :

for i:=1 to N do for j:=1 to N do if B[i - 1, j] > B[i, j - 1] then B[i, j]:= B[i - 1, j] + A[i, j] else B[i, j]:= B[i, j - 1] + A[i, j];

 

2

 

 

 


( A) ( B). . , . , A. N .

0 < N < 31.

.

 

[ ]

, . , N. , . 4 :

1 - , A .
2 - , .
3 - , ( , , B).
4 - , B .

N + 1. 2 , ( ) , :

1- 2 1- ;
2- 1- 4- ;
3- 2- 4- ;
4- 3- 4- ;

(-, " ") . N = 1 ( 3 4), N = 0 ( 4 - , ). , , . .

2

 

[ ] K-

, , A. , . . () , ( ) K 1, K. :

for i:= 2 to N do begin OTZ:= TZ; OZ:= Z; ONZ:= NZ; TZ:= OTZ * K + Z; {TZ } Z:= ONZ; {Z } NZ:= OZ * (K - 1) + ONZ * (K - 1) {NZ } end;

2

 
 

 

-
N - K, .
: 2 <= K <= 10, N + K <= 18.

N K , .

.

[ ]

 


, , . , , . , HELOLEH HTEOLFEOLEH. , .

100 , .

, . , .

[ ]

. , , . , . , .

, N. i- j- , F(I, J). , , - . . 100 * 100 . : F(I, I) = 1 F(I, J) = 0, I > J. . ( , ). F(I, J) = F(I + 1, J). , , ( K), F(I, J) = 2 + F(I + 1, K 1). I = K, . :

Function F(i, j: Integer): Integer; var Ch: Char; R1, R2: Integer; k: byte; begin if Mat[i, j] = -1 then BEGIN k:= j; while Inp[i] <> Inp[k] do dec(k); R1:= F(i + 1, j); if i <> k then R2:= F(i + 1, k - 1) + 2 else R2:= 1; if R1 > R2 then Mat[i, j]:= R1 else Mat[i, j]:= R2 END; F:= Mat[i, j] end;

, 1 N . ,

, , ( F(1, N)). , ( ).

: ( ) -.

2

 

X. X - 1, X - 2 X - 3. F(X), X , F(X) = F(X 1) + F(X 2) + F(X 3). : F(1) = 1, F(2) = 2 (), F(3) = 4 (3210, 320, 3-10, 30). . , , :

Function F(X: integer): longint; begin if D[X] = 0 then D[X]:= F(x-1) + F(x-2) + F(x-3); { X = 1..3, D[X] > 0 } F:= D[X] end;

.

2

 


N , 1 N , , k k /. , , , . , , .
, , s N! p .

0 < N < 17 0 < p < N + 1.

s.

[ ]

F(X, Y, Z), Y Z , X. . , . . F(I, Y 1, Z 1) I < X (, , ). F(I, Y 1, Z) I > X ( ).

function F(x, y, z: byte): Tcal; var i: byte; s: Tcal; begin if D[x, y, z] = -1 then begin s:= 0; for i:= 1 to x - 1 do s:= s + F(i, y - 1, z - 1); for i:= x + 1 to y do s:= s + F(x, y - 1, z); D[x, y, z]:= s end; F:= D[x, y, z] end;

Tcal. , LongInt , . Comp (Double ).

. , , ( ).

, , , .

2

 

2

 

 

 

 


, 1 * 1. N . , N = 10 :


( , , ).
:

 
Y Y Y
Y N Y
Y Y N

, , , , "Y", , "N" . , , . (, , .) .
, .
, . .
(, , , , . ,

, .)


N (1 <= N <= 100). , {"Y", "N"}, . , , . , .. .

N, .

. , , . , 64 ( ), . ( 64) 6 (, , , ). Y 1, N 0 . , , . . 576 (64 , 3 , 3 ) . , , . , . N Y ( ), . , , , . ( ). , .

Function Check(i, j: shortint; s: integer): integer;var r, k: integer;begin if i > j then begin k:= j; j:= i; i:= k end; if i = 2 then j:= j + 2; if i = 3 then j:= j + 3; r:= 1; for k:= 1 to j - 1 do r:= r * 2; Check:= s or r; { r s}end;...for i:= 0 to 63 do begin for l:= 1 to 3 do for k:= 1 to 3 do begin NewS:= Check(l, k, i);{ } Add(Na[News][k], A[i][l], Na[NewS][k]);{ , } {Na[News][k]:= Na[News][k] + A[i][l] } end end;

2

 

 

 

 

.. : , , , . 1999-2000 , .. , .

 

 





:


: 2017-02-11; !; : 1284 |


:

:

, , .
==> ...

1098 - | 862 -


© 2015-2024 lektsii.org - -

: 0.063 .