我有一组整数.我想使用动态编程找到该集合中增长最长的子序列.
algorithm computer-science memoization dynamic-programming lis
我正在审查算法课程中的一些旧笔记,动态编程问题对我来说似乎有点棘手.我有一个问题,我们有无限量的硬币,有一些面额x1,x2,... xn我们想要改变一些价值X.我们正在设计一个动态程序来决定是否可以改变X是否制造(不是最小化硬币数量,或返回哪些硬币,只是真或假).
我已经做了一些关于这个问题的思考,我可以看到这样做的递归方法,就像它...
MakeChange(X, x[1..n this is the coins])
for (int i = 1; i < n; i++)
{
if ( (X - x[i] ==0) || MakeChange(X - x[i]) )
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
转换这个动态程序对我来说并不容易.我怎么能接近这个?