Exemplo n.º 1
0
        public static MinCoinResult Recursive(int[] coins, int amount)
        {
            if (amount == 0)
            {
                return(new MinCoinResult(0));
            }

            var minimumCountResult = new MinCoinResult(Int32.MaxValue);

            foreach (var c in coins)
            {
                if (amount >= c)
                {
                    var currentMinCountResult = Recursive(coins, amount - c);
                    if (currentMinCountResult.minimumCount < minimumCountResult.minimumCount)
                    {
                        minimumCountResult = currentMinCountResult;
                        minimumCountResult.selectedCoins.Add(c);
                    }
                }
            }

            minimumCountResult.minimumCount++;

            return(minimumCountResult);
        }
Exemplo n.º 2
0
 public MinCoinResult(MinCoinResult b)
 {
     minimumCount  = b.minimumCount;
     selectedCoins = b.selectedCoins;
 }