последнем столбце


последнем столбце строки всегда записан 0.} Bl[i,k]:=Bl[i,k+1]; Inc(k); end;{while} end;{Press} var i,j,cnt:integer; begin FillChar(Bl,SizeOf(Bl),0); for i:=1 to N do Bl[1,i]:=i;{предполагается, что в первом блоке все столбцы} for i:=1 to N-1 do begin j:=1;cnt:=0; while Bl[i,j]<>0 do begin if A*[i,Bl[i,j]]=0 then begin{столбец не в этом блоке} Inc(cnt); Bl[i+1,cnt]:=Bl[i,j];{переписать в следующую строку} Press(i,j); Dec(j); end;{if} Inc(j); end;{while} end; {for} Sort; end;{Blocs} После этой предварительной работы мы имеем вполне “приличную” организацию данных для решения задачи путем перебора вариантов. Матрица Bl разбита на блоки, и необходимо выбрать по одному элементу (если соответствующие строки ещё не покрыты) из каждого блока. Процесс выбора следует продолжать до тех пор, пока не будут включены в “покрытие” все строки или окажется, что некоторую строку нельзя включить. Продолжим
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz