zoukankan      html  css  js  c++  java
  • leecode第一百七十四题(地下城游戏)

    class Solution {
    public:
        int calculateMinimumHP(vector<vector<int>>& dungeon) {
            int len1=dungeon.size();
            if(len1==0)
                return 1;
            int len2=dungeon[0].size();
            if(len2==0)
                return 1;
            
            vector<int> res(len2,0);//只使用一个数组辅助空间
            for(int i=len1-1;i>=0;i--)
            {
                for(int j=len2-1;j>=0;j--)
                {
                    if(i==len1-1&&j==len2-1)//初始化公主房间
                    {
                        if(dungeon[i][j]<0)//如果公主房间<0,那想活着必须取绝对值+1
                            res[j]=abs(dungeon[i][j])+1;
                        else
                            res[j]=1;//负责为1即可
                    }
                    else
                    {
                        int temp;//对于边界和中间值,对比的数据是不同的
                        if(i==len1-1)
                            temp=res[j+1];
                        else if(j==len2-1)
                            temp=res[j];
                        else
                            temp=min(res[j],res[j+1]);//如果是中间的值,只需看右或下里面最小值即可
                        
                        if(dungeon[i][j]<0)//如果当前房间掉血,就加上这个绝对值
                            res[j]=temp+abs(dungeon[i][j]);
                        else
                        {
                            if(temp-dungeon[i][j]>0)//如果不掉血且加上这个房间不多于后面需要
                                res[j]=temp-dungeon[i][j];
                            else
                                res[j]=1;//如果加血贼多,后面的房间完全没问题
                        }
                    }
                    
                }
            }
            
            return res[0];
        }
    };

    分析:

    动态规划不一定等于递归

    动态规划还是从后往前思考比较好

  • 相关阅读:
    面试题_day0212
    面试题_day0211
    猫眼的数字解密
    缺口验证码
    mysql替换字段里面的内容
    mysql重复id删除
    追踪你的女朋友。
    淘宝登录验证
    jadx-gui-1.0.0.jar怎么运行?
    Python实现一个进度条
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10843380.html
Copyright © 2011-2022 走看看