c语言输出所有排列组合可能
时间: 2023-12-13 08:05:22 浏览: 195
基于c语言排列组合算法
动态规划是一种解决多阶段决策过程最优化问题的方法。凑零钱问题可以用动态规划来解决。具体思路是,设f(i,j)表示用前i个硬币凑出j元钱所需的最小硬币数,那么有以下状态转移方程:
f(i,j) = min{f(i-1,j), f(i,j-v[i])+1}
其中v[i]表示第i个硬币的面值。意思是,如果不用第i个硬币,那么凑出j元钱所需的最小硬币数就是f(i-1,j);如果用第i个硬币,那么凑出j元钱所需的最小硬币数就是f(i,j-v[i])+1,其中v[i]表示第i个硬币的面值,因为用了第i个硬币,所以还需要凑出j-v[i]元钱。
最终的答案就是f(n,m),如果f(n,m)为无穷大,则表示无解;否则,可以通过回溯来得到具体的硬币面值。
C语言代码如下:
阅读全文