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()); }