动态规划算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。
其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
与分治法不同,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立。即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解。
[0,1,1,2,3,5,8,13...]
递归写发
第一种方法可以在优化,因为不需要列出数组,只需要有前两值即可
题目出一个金额,和硬币面值。答:凑成这个金额所需的 最少的硬币个数
#include<stdio.h>int main()
{
int n,i=1
double a=1,b=1
scanf("%d",&n)
if(n==1)
printf("1")
else if(n==2)
printf("1 1")
else
{
printf("1 1")
for(i=3i<=ni++)
{
b=a+b
a=b-a
printf(" %.f",b)
}
}
printf("\n")
return 0
}