动态规划之递推求解

在求解算法问题中,我们处理含有递推式的算法问题时通常使用的是递归的方式进行求解,但这种方式将会产生许多不必要的计算,使用动态规划递推方式则可以避免这一问题。以下以一实际问题进行说明。
N阶楼梯上楼说明:一次可以走两阶或一阶,问有多少种上楼方式?
问题分析:假设利用way[n]表示n阶梯的上楼方式种数,当n=0或n=1时,way[0] = 0,way[1] = 1,当n大于1时,由于最后一步是确定的,即way[n] = way[n-1] + way[n-2],由此边建立了递推关系式,这一过程利用C++编码求解如下:

# include <iostream>
# include <cstdio>

using namespace std;

long long way[Max];

int main(){
	int i,num;
	way[0] = 0;
	way[1] = 1;
	printf("输入楼梯层数:");
	scanf("%d",&num);
	for(i=2;i<=num;i++){
		way[i] = way[i-1]+way[i-2];
	}
	printf("共有%lld种上楼方式\n",way[num]);
	return 0;
} 
上一篇:T4


下一篇:2021-2022学年英语周报九年级第19期答案及试题