练习2014092103

/********************************************************************
* @file     Main_practise.cpp
* @date     2014-9-21
* @author   Tiger
* @brief    数字三角形
* @details  动态规划-递推计算
********************************************************************/
#include <cstdio>
#include <algorithm>
const int NUM = 5;

int Data[NUM][NUM] = {
    { 7 },
    { 3, 8 },
    { 8, 1, 0 },
    { 2, 7, 4, 4 },
    { 4, 5, 2, 6, 5 }
};

int Sum[NUM][NUM];

int solve(int i, int j);

int main(int argc, const char* argv[])
{
    for (int i=0; i<NUM; ++i)
    {
        for (int j=0; j<NUM; ++j)
        {
            Sum[i][j] = -1;
        }
    }

    printf("%d\n", solve(0, 0));

    return 0;
}

int solve(int i, int j)
{
    if (Sum[i][j] >= 0)
    {
        return Sum[i][j];
    }
    else
    {
        return Sum[i][j] = Data[i][j] + (i == NUM-1 ? 0 : std::max(solve(i+1, j), solve(i+1, j+1)));
    }
}
时间: 2024-10-08 07:41:21

练习2014092103的相关文章

Linux命令篇之stat命令和cp命令

# stat: ls 命令可能是每一个Unix 使用者第一个学习的命令之一, 但它仅仅显示了 stat 命令能给出的信息的一小部分. stat 命令从文件的索引节点获取信息.正如你可能已经了解的那样, 每一个系统里的文件都存有三组日期和时间, 它们包括最近修改时间(即使用 ls -l 命令时显示的日期和时间), 最近状态改变时间(包括对文件重命名)和最近访问时间. 使用长列表模式查看文件信息, 你会看到类似下面的内容: 代码如下: $ ls -l trythis -rwx------ 1 shs