k включать в решение.
k включать в решение. Для этого следует просмотреть столбец с номером k матрицы A* и проверить, нет ли совпадений единичных элементов со значением true соответствующих элементов массива R.
function Cross(k:integer):boolean; {пересечение столбца с частичным решением, сформированным ранее}
var j:integer;
begin
j:=1;
while (j<=N) and Not(R[j] and (A*[j,k]=1)) do Inc(j);
if j=N+1 then Cross:=true else Cross:=false;
end;{Cross}
Заключительная логика поиска (Find) имеет в качестве параметров номер блока (строки матрицы Bl) - переменная bloc и номер позиции в строке. Первый вызов - Find(1,1).
procedure Find(bloc,jnd:integer);
{переменные глобальные}
begin
if Result then begin if P<Pbetter then begin Pbetter:=P;
Sbetter:=S;
end;
end
else if Bl[bloc,jnd]=0 then exit
else if Cross(Bl[bloc,jnd]) then begin
Include(Bl[bloc,jnd]);
Find(bloc+1,1);
Exclude(Bl[bloc,jnd]);
end
else if
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа