0
切割我已經在Java中使用記憶化技術implelmented杆切割,這裏是我來了到目前爲止的代碼:需要幫助的羅德與記憶化
public class RodCutMemo {
public static int [] memo;
public static void main(String args [])
{ int [] prices = {0,2,3,5,8,6,4,9,10,12,15,16,17,18,20,22,31,50} ;
int n=5;
memo = new int [n+1];
for(int i =1;i<=n;i++)
{ memo[i]=-9999;}
System.out.println(maxProfitRodCutMemo(prices ,n));
}
public static int maxProfitRodCutMemo(int [] prices,int n)
{ if(memo[n]>=0)
{
return memo[n];}
//else if(n==0)
//{
// return 0;
//}
else
{ int q = -9999;
for(int i =1;i<=n;i++)
{q=Math.max(q,prices[i]+maxProfitRodCutMemo(prices, n-i));}
return q;}}}
我這裏有兩個問題...
Q1)我已經注釋掉了其中一個基本條件.. if(n==0)
。這就是code.As需要的。我錯過了一些沒有這個角落的情況?
這似乎是正確的答案,因爲,當'maxProfitRodCutMemo(int [] prices,0),'被調用時,它將通過'if(memo [n]> = 0)'處理。'備忘[0]等於0' – function
嗯,不熟悉java(因爲你沒有java標籤),那麼這是唯一的當你可能需要n == 0的基本情況時 –