Program E04;
uses crt;
var
n,i,k,f: integer;
X: array[1..50] of real;
Max,S: real;
begin
clrscr;
writeln('Введите размерность: ');
readln(n);
writeln('Введите массив: ');
for i:=1 to n do
begin
write('X[',i:2,'] ==> ');
readln(X[i])
end;
writeln('Исходный массив: ');
for i:=1 to n do
write(X[i],' ');
writeln;
Max:=abs(X[1]);
for i:=1 to n do
if Max <= abs(X[i]) then
Max:=abs(X[i]);
writeln('Максимальный элемент по модулю: ',Max);
i:=1;
while (i <= n) and (X[i] <= 0) do
i:=i+1;
if i > n then
writeln ('folse')
else
begin
k:=i;
i:=i+1;
while (i <= n) and (X[i] <= 0) do
i:=i+1;
if i > n then
writeln ('folse')
else
begin
f:=i;
for i := k + 1 to f - 1 do
S:=S+X[i];
writeln('Сумма: ',S:5:2);
end;
end;
end.
<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.
11 или 2 или 1 или 3 или 4 все числа
Var s,r,k: string;
j: integer;
begin
write('строка: '); readln(s);
foreach k in s.Split(' ').Distinct do
begin
j:=0;
foreach r in s.Split(' ') do
if r=k then j:=j+1;
writeln('слово ','"',k,'"',' встречается ',j,' раз');
end;
<span>end.
</span>
Комбинаторика вроде как, но даже логически понятно если подумать что это не + и -, а 0 и 1,и тут логически должно стать понятно что все как и там,а значит два в третьей степени,а именно 8 различных, да что уж там вот все 8
---
--+
-+-
-++
+--
+-+
++-
+++