我很努力地理解動態編程示例中使用的這種遞歸。任何人都可以解釋這個工作。目標是找到一個值最少的硬幣數量。瞭解遞歸
// F(N)= 1架+分鐘F(N-d)所有denomimationsð
僞代碼:
int memo[128]; //initialized to -1
int min_coin(int n)
{
if(n < 0) return INF;
if(n == 0) return 0;
if(memo[n] != -1)
int ans = INF;
for(int i = 0; i < num_denomination; ++i)
{
ans = min(ans, min_coin(n - denominations[i]));
}
return memo[n] = ans+1; //when does this get called?
}
if(memo [n]!= -1)後缺少一些'{}'? – 2010-09-29 03:55:18
我不知道要糾正它。這是作爲一個例子在這裏http://www.ugrad.cs.ubc.ca/~cs490/sec202/notes/dp/DP%201.pdf – Neerad 2010-09-29 03:59:18