Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

จะใช้ปัญหาการเปลี่ยนเหรียญโดยใช้วิธีการจากล่างขึ้นบนโดยใช้ C # ได้อย่างไร


CoinChangeBottomUpApproach ใช้ 3 พารามิเตอร์เนื่องจากอินพุต n คือจำนวนเงิน อาร์เรย์เหรียญประกอบด้วยจำนวนเหรียญทั้งหมด t มีจำนวนเหรียญทั้งหมด ประกาศอาร์เรย์แบบไดนามิกที่เก็บค่าที่คำนวณไว้ก่อนหน้านี้ วนซ้ำผ่านอาร์เรย์และคำนวณเหรียญขั้นต่ำที่จำเป็นในการคำนวณจำนวน หากคำนวณเสร็จแล้ว ให้นำค่าจากไดนามิกอาร์เรย์

ความซับซ้อนของเวลา - โอ(N)

ความซับซ้อนของอวกาศ - โอ(N)

ตัวอย่าง

public class DynamicProgramming{
   public int CoinChangeBottomUpApproach(int n,int[] coins,int t){
      int[] dp = new int[100];
      for (int i = 1; i < n; i++){
         dp[i] = int.MaxValue;
         for (int j = 0; j < t; j++){
            if (i - coins[j] >= 0){
               int subProb = dp[i - coins[j]];
               dp[i] = Math.Min(dp[i], subProb + 1);
            }
         }
      }
      return dp[n]+1;
   }
}

static void Main(string[] args){
   DynamicProgramming dp = new DynamicProgramming();
   int[] coins = { 1, 7, 10 };
   int ss = dp.CoinChangeBottomUpApproach(15, coins, coins.Count());
   Console.WriteLine(ss);
}

ผลลัพธ์

3