![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Числа [D7]
Silica © (2006-05-12 19:11:00)Задан массив натуральных чисел М[1,N], упорядоченный по убыванию.
Найти первое натуральное число, не представимое суммой никаких элементов этого массива, при этом сумма может состоять и из одного слагаемого, но каждый элемент массива может входить в нее только один раз.
Помогите, пожалуйста разобраться. Не могу уже.
Вот код, который у меня на данный момент:
procedure TForm2.Button1Click(Sender: TObject);
var
i, j, vr : integer;
m: array[0..1024] of integer;
begin
label1.Caption := '';
for i := 0 to StringGrid1.ColCount - 1 do begin
StringGrid1.Cells[i,0] := inttostr(random(99));
m[i] := strtoint(StringGrid1.Cells[i, 0]);
if m[1] <> m[i] + m[i+1] then begin
label1.Caption := inttostr(m[1]);
end;
end;
for i:= 0 to StringGrid1.ColCount - 1 do
for j:= 0 to StringGrid1.ColCount - 2 do
begin
if m[j] < m[j+1] then
begin
vr := m[j];
m[j] := m[j+1];
m[j+1] := vr;
end;
end;
for i:=0 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[i,0] := inttostr(m[i]);
end;
Еще я пробовала через
for for i := 0 to StringGrid1.ColCount - 2 do
if stringgrid1.cells[i,0] <> stringgrid1.cells[i+1,0] + stringgrid1.cells[i+2,0] then ...
Не получается. :(
MBo (2006-05-12 20:40:00) [1]P.S.
Направление цикла здесь использовано для массива, упорядоченного по неубыванию e.g. (1,2,2,7)
MBo (2006-05-12 20:36:00) [2]
function MinBad(Data: array of Integer): Integer;
var
i: Integer;
begin
Result := 1;
for i := 0 to High(Data) do
if Data[i] <= Result then
Inc(Result, Data[i])
else
Exit
end;