一般地,当某个问题可以用动态规划法求解, 但二维数组中有相当一部分元素在整个计算中都不会被用到。我们就不需要以递推方式逐个计算二维数组中元素, 而采用备忘录方法:
MemorizedMatrixChainMain.c
#include
<
stdio.h
>
#include
<
limits.h
>
#define
LENGTH 6

void
MemorizedMatrixChain(
int
p[],
int
m[][LENGTH],
int
s[][LENGTH]);
int
LookupChain(
int
p[],
int
i,
int
j,
int
m[][LENGTH],
int
s[][LENGTH]);

void
MemorizedMatrixChain(
int
p[],
int
m[][LENGTH],
int
s[][LENGTH])

...
{
int i, j;

for(i = 0; i < LENGTH; i++)
MemorizedMatrixChainMain.c
#include
<
stdio.h
>
#include
<
limits.h
>
#define
LENGTH 6

void
MemorizedMatrixChain(
int
p[],
int
m[][LENGTH],
int
s[][LENGTH]);
int
LookupChain(
int
p[],
int
i,
int
j,
int
m[][LENGTH],
int
s[][LENGTH]);
void
MemorizedMatrixChain(
int
p[],
int
m[][LENGTH],
int
s[][LENGTH])
...
{
int i, j;
for(i = 0; i < LENGTH; i++)

本文介绍了一种使用备忘录法解决动态规划中的矩阵链乘法问题,通过避免计算已知结果来优化效率。示例代码展示了如何实现备忘录法,并打印出最优的括号表示。
最低0.47元/天 解锁文章
1188

被折叠的 条评论
为什么被折叠?



