Выплата заданной суммы денег

Опубликовано Mar 1, 2012 в Математика и логика | 6 коммент.

, , ,

Выплата заданной суммы денег

Имеются монеты достоинством 1, 2, 5, 10, 25, 50 копеек. Написать функцию, которая определяет, как любую заданную сумму денег представить наименьшим количеством монет указанного достоинства.

Код решения задачи на C#

 class Program
  {
    static void CoinsCount
       (int Money, int CoinIndex, int[] CoinsValues, int[] CoinsQty)
    {
      if (CoinIndex == CoinsValues.Length - 1)
      {
        CoinsQty[CoinIndex] = Money;
        return;
      }
      else{
        CoinsQty[CoinIndex] = Money / CoinsValues[CoinIndex];
        int RestOfMoney = Money % CoinsValues[CoinIndex];
        CoinIndex++;
        CoinsCount(RestOfMoney, CoinIndex, CoinsValues, CoinsQty);
      }
    }
    static void Main(string[] args)
    {
      int[] CoinsValues = new int[6]{50,25,10,5,2,1};
      int[] CoinsQty1 = new int[6];
      CoinsCount(345, 0, CoinsValues, CoinsQty1);
 
      int[] CoinsQty2 = new int[6];
      CoinsCount(50, 0, CoinsValues, CoinsQty2);
 
      int[] CoinsQty3 = new int[6];
      CoinsCount(111, 0, CoinsValues, CoinsQty3);
    }
  }

Вопросы

  • Как Вы предлагаете изменить сигнатуру метода CoinsCount? Почему?
  • Как переписать этот метод без рекурсии?

Автор публикации: