您的位置:首页 > 其它

Dynamic Programing 动态规划试题

2016-04-13 00:16 260 查看
1、数塔问题

     


数塔问题:要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?

思路:我想了两种解决问题的方法,一种是用递归求和,一种使用四层循环。但都不如经典方式“转移方式”简洁。

转移方程:sum[i]
= max(a[左孩子] , a[右孩子]) + a[i]




public void main(){
int i,j;
int data

= {
{9,0,0,0,0},
{12,15,0,0,0},
{10,6,8,0,0},
{2,18,9,5,0},
{19,7,10,4,16}
};
for(i = N-1; i > 0; i--)
for(j = 0; j < i; j++)
data[i-1][j] += data[i][j] > data[i][j+1] ? data[i][j] : data[i][j+1];

MessageBox.Show(data[0][0]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Dynamic Programing