Exemple #1
0
        private int PredictDifficulty(int times, int trades, double price, int food, int maxFood, int silver, int maxSilver)
        {
            if (times == 0)
            {
                // OK.
                return(TaskDifficulty.FoodOk());
            }
            if (trades <= 0)
            {
                // Chợ đen.
                // Chợ đen giá gấp đôi.
                var cost = (int)Math.Floor(price * 2);
                if (food + 1 <= maxFood && silver >= cost)
                {
                    // Đủ bạc và không tràn kho lúa.
                    return(PredictDifficulty(times - 1, trades, price, food + 1, maxFood, silver - cost, maxSilver));
                }
            }
            else
            {
                // Giao dịch thường.
                // Bán lúa trước.
                var cost = (int)Math.Floor(price);  // Cost = 0?
                if (food > 0 && silver + cost <= maxSilver)
                {
                    return(PredictDifficulty(times - 1, trades - 1, price, food - 1, maxFood, silver + cost, maxSilver));
                }

                // Mua lúa.
                if (food + 1 < maxFood && silver >= cost)
                {
                    return(PredictDifficulty(times - 1, trades - 1, price, food + 1, maxFood, silver - cost, maxSilver));
                }
            }

            // Không thể hoàn thành (bây giờ).
            return(TaskDifficulty.FoodNotOk());
        }