47:礼物的最大价值

注意指针数组的建立和删除

int getMaxvalue(const int*matrix, int rows, int cols)
{
    if (matrix == NULL || rows <= 0 || cols <= 0)return 0;
    int **dp = new int*[rows];
    for (int i = 0; i < rows; i++)dp[i] = new int[cols];
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            int left = 0, up = 0;
            if (j)left = dp[i][j - 1];
            if (i)up = dp[i - 1][j];
            dp[i][j] = max(left, up) + matrix[i*cols + j];
        }
    }
    int ans=dp[rows - 1][cols - 1];
    for (int i = 0; i < rows; i++)delete[]dp[i];
    delete[]dp;
    return ans;
}

int getMaxvalue(const int*matrix, int rows, int cols)
{
    if (matrix == NULL || rows <= 0 || cols <= 0)return 0;
    int *dp = new int[cols];
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            int left = 0, up = 0;
            if (i)up = dp[j];//判断上和左是否存在
            if (j)left = dp[j - 1];
            dp[j] = max(left, up) + matrix[i*cols + j];
        }
    }
    int ans = dp[cols - 1];
    delete[]dp;
    return ans;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 在一个 mxn 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0) 你可以从棋盘的左上角...
    cb_guo阅读 3,975评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,910评论 1 32
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,850评论 3 44
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    zweic阅读 7,652评论 0 73
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,791评论 0 6

友情链接更多精彩内容