Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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.
 

Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 08:36 09-10-2010
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru