smirnvlad
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору все варианты сумм элементов (пример для n=3) № варианта | P[1] | P[2] | P[3] | 1 | 1 | 0 | 0 | 2 | 0 | 1 | 0 | 3 | 1 | 1 | 0 | 4 | 0 | 0 | 1 | 5 | 1 | 0 | 1 | 6 | 0 | 1 | 1 | 7 | 1 | 1 | 1 | 1 - складывать эдемент, 0 - нет если число равняется одной из сумм, переходим к следующему касаемо реализации, можно сначала посчитать массив всех вариантов сумм, а потом уже перебирать числа, а можно для каждого числа считать суммы количество вариантов сумм 2^n-1 Код: program m3; const n = 3; var P: array[1..n] of integer; i, v, m, sum: integer; function pow(n, p:integer):integer; var r:integer; begin r:=1; while p>0 do begin r:=r*n; dec(p); end; pow:=r; end; begin if n<1 then halt(1); randomize; {fill P} for i:=1 to n do begin P[i]:=random(10) + 1; write(P[i], ' '); end; writeln; m:=1; while true do begin for v:=1 to pow(2,n)-1 do {perebor variantov summ} begin sum:=0; for i := 1 to n do {summiruem neobhodimie elementi} begin if ((v shr (i-1)) and 1) = 1 then sum:=sum+P[i]; end; if m=sum then break; end; if m<>sum then break; inc(m); end; writeln('Min natural ', m); readln; end. |
|