【发布时间】:2017-12-22 21:14:17
【问题描述】:
long long num(long long p)
{
if(p<0)
return 0;
if(p==0)
return 1;
if(t[p]!=0)
return t[p];
t[p]=num(p-1)+num(p-2)+num(p-5)+num(p-10)+num(p-20)+num(p-50)+num(p-100);
return t[p];
}
我使用这种方法num 来计算硬币找零问题的可能方式的数量。问题是这种方法将1,1,2 和1,2,1 计算为不同,应该视为1。如何做到这一点?
在任何地方都找不到任何好的解决方案。
【问题讨论】:
-
这似乎是 Math SO
-
您只需要记住
lastUsedCoinIndex并且只考虑大于或等于的硬币索引。见这里:stackoverflow.com/questions/46257659/…
标签: c++ algorithm dynamic-programming combinatorics