Next:5.3.2
Поиск в упорядоченном векторе
Up:5.3
Программы обработки векторов
Previous:5.3
Программы обработки векторов
Решение. Обозначим через Нечетных
для
количество нечетных элементов среди .
Тогда наша цель состоит в построении Нечетных
для всех .
Для функции Нечетных имеем, очевидно
Этим определениям следует наше первое решение
module ВекторФункция;
const M = 200;
var I,J : integer; A,B : array M+1
of integer;
begin
for I := 1 to M do read(A[I]);
for I := 1 to
M do
B[I] := 0; (* {B[I] = Нечетных(I, I-1)}
*)
for J := I to M-1 do
(* {B[I] = Нечетных(I, I-1)} *)
B [I] := B[I] + A [J] mod 2 (* {B[I] = Нечетных(I,
J)} *)
end
end;
(* *)
end
for I := 1 to M do write(B[I])
end
end ВекторФункция.
Для построения другого, более эффективного решения заметим, что
Отсюда сразу следует второе решение нашей задачи, в котором мы строим элемент после построения элемента в соответствии с приведенным определением для Нечетных(i, 200).
module ВекторФункция2;
const M = 200;
var I: integer; A: array M of
integer; B:array M+2
of integer;
begin
for I := 1 to M do read(A[I])
end;
B[M+1] := 0;
{ B[M+1]= Нечетных(M+1,M
)}
for I := M to 1 by -1 do
(* *)
B[I] := B [I+1] + A [I]
mod
2; (* { B[I]=Нечетных(I, M )} *)
end;
(* *)
for I := 1 to M do write(B[I])
end
end ВекторФункция2.
Next:5.3.2
Поиск в упорядоченном векторе
Up:5.3
Программы обработки векторов
Previous:5.3
Программы обработки векторов