动态规划求解二项式系数:备忘录法与迭代法

发布时间:2025-09-26 13:38

用敏捷方法管理项目,快速迭代 #生活技巧# #团队建设技巧# #创新思维在团队#

动态规划(自底向上)

最新推荐文章于 2025-03-12 22:30:17 发布

转载 于 2013-07-19 15:20:56 发布 · 5.6k 阅读

· 0

· 5


1. 动态规划 备忘录法

备忘录方法采用自顶向下方式,为每个解过的子问题建立了备忘录以备需要时查看,避免了相同子问题的重复求解。

说明: 在非边界条件下,每次求解子问题时,先查找备忘录.

若子问题已经求解过了,直接取出子问题的解;若未求解过,则求解并保存到备忘录中.

此处的备忘录就是一个存储数据的容器.

public staticint Binomial(int n,int m){ if(n==m || m==0){ return 1;} int date = readDate(n,m); if(date>0){ return date; } else { int result = Binomial(n-1,m) + Binomial(n-1,m-1);writeDate(n,m,result); return result; } } public staticint readDate(int n,int m){ for(int i=0;i<demo.size();i++){ Map<String,Integer> date = new HashMap<String,Integer>();date = demo.get(i); if(date.get("" + n + m) !=null) { return date.get("" + n + m);} } return 0;} public staticvoid writeDate(int n,int m,int value){ Map<String,Integer> date = new HashMap<String,Integer>();date.put("" + n + m,value); demo.add(date); }

public static int Binomial(int n,int m)

{

if(n==m || m==0)

{

return 1;

}

int date = readDate(n,m);

if(date>0)

{

return date;

}

else

{

int result = Binomial(n-1,m) + Binomial(n-1,m-1);

writeDate(n,m,result);

return result;

}

}

public static int readDate(int n,int m)

{

for(int i=0;i<demo.size();i++)

{

Map<String,Integer> date = new HashMap<String,Integer>();

date = demo.get(i);

if(date.get("" + n + m) != null)

{

return date.get("" + n + m);

}

}

return 0;

}

public static void writeDate(int n,int m,int value)

{

Map<String,Integer> date = new HashMap<String,Integer>();

date.put("" + n + m,value);

demo.add(date);

}

java

运行

2. 动态规划 迭代法:

迭代法采用自底向上方式,保存已求解的子问题,需要时取出,消除对某些子问题的重复求解.

Pascal三角形:


说明: 在非边界的情况下,二项式系数=上一行同列数值+上一行同列前一个数值.

为了节省空间,根据n的大小,定义长度为n+1的整型数组,用以存储子问题的解.

从后往前计算图中二项式系数的解,完成后,将问题解存储在数组中对应的列标号位置.

public staticint binomial(int n,int m) { int value[] = newint[n+1];for(int i=0;i<=n;i++){ value[i] = 1; for(int j=i-1;j>0;j--){ value[j] = value[j] + value[j-1];} } return value[m]; }

网址:动态规划求解二项式系数:备忘录法与迭代法 https://www.yuejiaxmz.com/news/view/1337250

相关内容

手把手教你强化学习 (四)动态规划与策略迭代、值迭代
用迭代法求x=√a求平方根的迭代公式为
持续迭代整理记录体系
算法动态规划01背包问题
强化学习二(动态规划)
动态规划算法在生活中的应用
迭代求解最优化问题——Levenberg
windows下有可以做生活规划的备忘录软件吗?
[动态规划]4 状态压缩(空间优化)
行程计划备忘录app

随便看看