Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #11  
Старый 19.04.2010, 14:29
гость

 
Сообщений: n/a

ну вот как-то так оно все будет выглядет:
Код:
const
  kMaxCoins = 10;  { максимальное число достоинство монет }

{ входные данные: }
var
  NumCoins: integer;  { число различных достоинств монет }
  CoinValues: array[1..kMaxCoins] of integer;   { достоинства }
  CoinAmounts: array[1..kMaxCoins] of integer;  { число монет каждого достоинства }
  MoneyAmount: integer;  { сумма денег }

procedure BruteForce;
var
  taken: array[1..kMaxCoins] of integer;

  procedure process;
  begin
    { здесь надо обработать очередное сочетание.
      taken[i] - число взятых монет достоинства CoinValues[i] }
  end;

  procedure recurse(i, moneyLeft: integer);
  begin
    if i > NumCoins then
      if moneyLeft = 0 then
        process;
    else begin
      for taken[i] := 1 to CoinAmounts[i] do begin
        if taken[i] * CoinValues[i] > moneyLeft then
          break;
        recurse(i + 1, moneyLeft - taken[i] * CoinValues[i]);
      end;
    end;
  end;

var
  j: integer;
begin
  for j := 1 to kMaxCoins do
    taken[j] := 0;
  recurse(1, MoneyAmount);
end;
паскалем давно не пользуюсь, так что возможны синтаксические и пр. ошибки в коде. вообще же, это уже почти мертвый язык, всем давно уже пора переходить на что-то посоверменне (питон, например)
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск кратчайшего пути во взвешенном графе с заданным количеством вершин или ребер Mitrich Графы 9 24.07.2009 18:21
Выпуклая оболочка с фиксированным количеством вершин Belyaev_Igor Вычислительная геометрия 6 16.01.2009 18:45