Var
s, sl, sc: string;
i, k: integer;
begin
write('Введите текст ');
readln(s);
write('Введите слово ');
readln(sl);
s:=' '+s+' ';
<span> sl:=' '+sl+' ';</span>
for i := 1 to length(s) - length(sl) + 1 do
begin
sc := copy(s, i, length(sl));
if sc = sl then inc(k);
end;
if k = 0 then writeln('Не встречается')
else writeln('Встречается ', k, ' раз');
end.
256=2^8 ---> 8 бит для кодирования одного символа
F =8*30*70*5=84 000 бит весь текст;
t=1 мин =60 секунд
V =F/t =84 000/60= 1400 бит/c =175 байт/c
<u>1) Решение методом рекурсии.</u>
<u>Программа проста в понимании, но неэффективна при больших значениях
</u>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.
<u>2) Решение методом динамического программирования. Намного быстрее метода с рекурсией.</u><u></u>
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.
<u>3) Решение методом моделирования. Использует меньше памяти.
</u>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.
110
х 101
------------
110
+ 110
------------
11110