动态规划算法求解数塔问题C语言,动态规划 数塔问题求解 C++实现

/** File name  : digital_tower.cpp* Function   : 动态规划 数塔问题求解  C++实现* Created on : 2016年6月17日* Author     : beijiwei@qq.com* Copyright  : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。任何单位和个人不经本人允许不得用于商业用途      9    12 15   10 6 8  2 18 9  519 7 10 4 16从顶层或底层 走,在每一节点可选择左走或者右走.求一条路径,使得到的数值和最大.input:912 1510 6 82 18 9  519 7 10 4 16*/#include #include #pragma warning(disable:4996)using namespace std;#define M 5int get_max(int x, int y);int main(int argc, char** argv){    int i = 0, j = 0, k = 0;    int map[M][M];    int result[M][M];    freopen("input.txt", "r", stdin);    memset(result, 0, sizeof(int)*M*M);    memset(map, 0, sizeof(int)*M*M);    for (i = 0; i < M; i++)//读入塔    {        for (j = 0; j < i + 1; j++)        {            cin >> map[i][j];            if (i == M - 1)            {                result[i][j] = map[i][j];            }        }    }    for (k = M - 2; k >= 0; k--)//上塔 第k层,    {        for (i = 0; i < k + 1; i++)//统计 一行的每一个节点, 当前点是(k,i)        {            result[k][i] = get_max(map[k][i] + result[k + 1][i], map[k][i] + result[k + 1][i+1]);        }    }    cout << result[0][0] << endl;    int target = result[0][0] - map[0][0];    cout << map[0][0] << "\t"; //从塔顶至塔底 输出路径    i = 1;    while ( i y) ? x : y;} 原文作者:动态规划
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值