我很努力地理解动态编程示例中使用的这种递归。任何人都可以解释这个工作。目标是找到一个值最少的硬币数量。了解递归
// 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