MinimumStepstoOneBottomdownApproach ইনপুট হিসেবে ইন্টিজার n নেয়। প্যারামিটার n এলিমেন্টের মোট সংখ্যা ধারণ করে। প্রাথমিক শর্ত চেক করে n কি 1-এর সমান। যদি n 1-এর সমান হয় তবে 0 রিটার্ন করুন। op1, op2 এবং op3 কে ম্যাক্স ভ্যালুতে ইনিশিয়ালাইজ করুন। যদি n mod 3 শূন্য হয়, তবে MinimumStepstoOneBottomdownApproach রিকারসিভলি কল করে op1-এ অ্যাসাইন করুন, যদি n mod 2 শূন্য হয়, তবে MinimumStepstoOneBottomdownApproach রিকারসিভলি কল করে op2-এ অ্যাসাইন করুন অন্যথায় n-এ ১ বিয়োগ করে MinimumStepstoOneBottomdownApproach কল করুন। চেষ্টামুখে dp অ্যারে থেকে মান রিটার্ন করুন।
টাইম কমপ্লেক্সিটি − O(N)
স্পেস কমপ্লেক্সিটি − O(N)
উদাহরণ
public class DynamicProgramming{ public int MinimumStepstoOneBottomdownApproach(int n){ int[] dp = new int[100]; dp[1] = 0; for (int i = 2; i < n; i++){ int op1 = int.MaxValue, op2 = int.MaxValue, op3 = int.MaxValue; if (n % 3 == 0){ op1 = dp[i / 3]; } if (n % 2 == 0){ op2 = dp[i / 2]; } op3= dp[i -1]; dp[i]= Math.Min(Math.Min(op1, op2), op3) + 1; } return dp[n-1]; } } static void Main(string[] args){ DynamicProgramming dp = new DynamicProgramming(); Console.WriteLine(dp.MinimumStepstoOneBottomdownApproach(10)) }আউটপুট
3