【算法设计与分析】动态规划课后习题

动态规划课后习题:3.1 满足递归式F(n)=F(n-1)+F(n-2)和初始值F(0)=F(1)=1的数列称为斐波那契数列。考虑如何计算该数列的第n项F(n)。(1)说明根据递归式直接完成计算,将有子问题重复求解;(2)说明该问题具有优化子结构;(3)写出求解F(n)的动态规划算法,并分析算法的时间复杂性。答:(1)计算F(n)需要计算F(n-1)和F(n-2),但是计算F(n-1)时...
摘要由CSDN通过智能技术生成

动态规划课后习题:


3.1
满足递归式F(n)=F(n-1)+F(n-2)和初始值F(0)=F(1)=1的数列称为斐波那契数列。考虑如何计算该数列的第n项F(n)。
(1)说明根据递归式直接完成计算,将有子问题重复求解;
(2)说明该问题具有优化子结构;
(3)写出求解F(n)的动态规划算法,并分析算法的时间复杂性。
  • 答:
    (1)计算F(n)需要计算F(n-1)和F(n-2),但是计算F(n-1)时仍需重复计算F(n-2),出现重复计算。
    以此类推,对于F(n-i)(i≠n或n-1)时,此子问题将会被计算i次。
    (2)在计算后面的值时,会反复用到前面的值。最终的结果是由前面问题的解组成的,故存在最优子结构。
    (3)代码:
int fib(){
   
	int n,result,son1,son2;
	son1 = 1;
	son2 = 1;
	for(int i = 2;i <= n;i++){
   
		result = son1+son2;
		son1 = son2;
		son2 = result; 
	}
	return 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值