,动态规划法是把多阶段过程转化为一系列单阶段
问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的方法
。我把它
转化为
Cmn=C(m-1)n+C(m-1)(n-1)
来求解。
2.
数学建模:
要计算
Cmn=C(m-1)n+C(m-1)(n-1)
,建立的数学模型为:
1
0
行
11
1
行
121
2
行
1331
3
行
14641
4
行
... ...
而要求的结果就是第
m
行第
n
列的数字,构造一个动态数组
a[100],
每一次生成一行,而生
成下一行时根据上一行的数据动态更新数组中的内容,就可以实现本算法了。
3.
算法设计:
首先接收用户输入的
m,n
的值,算法开始时,令
a[0]=1
,表示第
0
行,然后利用
for
循环,依次依照
a[j]=a[j]+a[j-1]
来依次更新第
1
到第
m
行的数组,然后输出第
m
行的第
n
列就行了。
For
循环为:
for(i=1;i<=m;i++)
for(a[i]=1,j=i-1;j>=1;j--)
a[j]+=a[j-1];
4.
算法复杂度:
由上述算法可知,在更新第
i
层时,需要
i-1
个步骤,所以总的复杂度为
1+2+3+...+
(
m-1
)
,即
n
的平方。
5.
代码实现:
#include
using namespace std;
#define SIZE 200
int main()
{