Program test; var a: array of integer; b: array of integer; c: array of integer; aa, bb, cc: integer; begin writeln('Введите размер массива a'); readln(aa); writeln('Введите размер массива b'); readln(bb); a := new integer[aa]; b := new integer[bb]; c := new integer[aa + bb]; cc := 0; aa := 0; bb := 0; writeln('Заполнение массива a'); while(aa < Length(a)) do begin readln(a[aa]); aa := aa + 1; end; writeln('Заполнение массива b'); while(bb < Length(b)) do begin readln(b[bb]); bb := bb + 1; end; while(cc < Length(c)) do begin if(cc < Length(a)) then begin c[cc] := a[cc] end else begin c[cc] := b[cc - Length(a)]; end; cc := cc + 1; end; writeln('Полученный массив'); cc:=0; while(cc < Length(c)) do begin writeln(c[cc]); cc:=cc+1; end;end.
1) Решение методом рекурсии. Программа проста в понимании, но неэффективна при больших значениях var n: integer; function f(i: integer): longint; begin if i < 2 then f := 1 else f := f(i - 1) + f(i - 2); end; begin read(n); writeln(f(n)); end.
2) Решение методом динамического программирования. Намного быстрее метода с рекурсией. var i, n: integer; f: array[0..50] of longint; begin read(n); f[0] := 1; f[1] := 1; for i := 2 to n do f[i] := f[i - 1] + f[i - 2]; writeln(f[n]); end.
3) Решение методом моделирования. Использует меньше памяти. var n, a, b, i: integer; begin read(n); if n < 2 then a := 1 else begin a := 0; b := 1; for i := 0 to n do begin b := a + b; a := b - a; end; end; writeln(a); end.
var a: array of integer; b: array of integer; c: array of integer; aa, bb, cc: integer;
begin writeln('Введите размер массива a'); readln(aa); writeln('Введите размер массива b'); readln(bb); a := new integer[aa]; b := new integer[bb]; c := new integer[aa + bb]; cc := 0; aa := 0; bb := 0; writeln('Заполнение массива a'); while(aa < Length(a)) do begin readln(a[aa]); aa := aa + 1; end; writeln('Заполнение массива b'); while(bb < Length(b)) do begin readln(b[bb]); bb := bb + 1; end; while(cc < Length(c)) do begin if(cc < Length(a)) then begin c[cc] := a[cc] end else begin c[cc] := b[cc - Length(a)]; end; cc := cc + 1; end; writeln('Полученный массив'); cc:=0; while(cc < Length(c)) do begin writeln(c[cc]); cc:=cc+1; end;end.
Программа проста в понимании, но неэффективна при больших значениях
var
n: integer;
function f(i: integer): longint;
begin
if i < 2 then
f := 1
else
f := f(i - 1) + f(i - 2);
end;
begin
read(n);
writeln(f(n));
end.
2) Решение методом динамического программирования. Намного быстрее метода с рекурсией.
var
i, n: integer;
f: array[0..50] of longint;
begin
read(n);
f[0] := 1;
f[1] := 1;
for i := 2 to n do
f[i] := f[i - 1] + f[i - 2];
writeln(f[n]);
end.
3) Решение методом моделирования. Использует меньше памяти.
var
n, a, b, i: integer;
begin
read(n);
if n < 2 then
a := 1
else
begin
a := 0;
b := 1;
for i := 0 to n do
begin
b := a + b;
a := b - a;
end;
end;
writeln(a);
end.