题目描述
一张整钱分成N张零钱,如果不能则返回-1,如果能返回最少的组合
比如10=5+5=5+2+2+1=5+1+1+1+1
首次尝试(DFS)
按照现实的逻辑结合剪枝算法首先想到是的深度优先遍历DFS。理想情况下,10=5+5立马就得出了最优解,但运行起来却不尽人意。
再次尝试(BFS)
原本想的既然DFS无法解决超时问题,BFS也应该不行吧。结果BFS却没有超时,仔细分析后才发现BFS效率是DFS的L倍(L为零钱的长度)
最终尝试(动态规划)
可以看作一个满完全背包问题的一个变种,用空间来换取时间f[j] = min(f[j], f[j - coins[i]] + 1);
