题意:
给出一个数塔,求出从顶层到底层所经过的数字的最小(或者最大)和。
示例:
解决方案:
采用自底向上的动态规划方法,从最底层向上重构出新数塔,以最后一层为基础,从倒数第二层开始向上重新构造出新数塔,至顶层后唯一的一个数字就是最小值。
在这个过程中,推出arr[i][j]=Min(arr[i][j]左孩子,arr[i][j]右孩子)+arr[i][j],即:arr[i][j]=Min( arr[i+1][j],arr[i+1][j+1] )+arr[i][j]
示例代码:
#include"stdio.h"