动态规划 数字三角形

来源:互联网 发布:网络平台开发预算 编辑:程序博客网 时间:2024/05/21 09:50
从下向上计算将下面没对得值最大的选出,加上上面的每一个值,再次循环。#include <iostream>#include <algorithm>#include "string.h"#define Max 101using namespace std;int D[Max][Max];int num;int MaxSum(int num){    int i, j;    for(i = num - 1; i >= 1; i --)        for(j = 1; j <= i; j ++){            D[i][j] = max(D[i+1][j],D[i+1][j+1]) + D[i][j];        }    return D[1][1];}int main(int argc, char const *argv[]){    int i, j;    cin >> num;    for(i = 1; i <= num; i ++)        for(j = 1; j <= i; j ++)            cin >> D[i][j];    cout << MaxSum(num) << endl;    return 0;}