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