Leetcode Triangle

来源:互联网 发布:网络基础哪本书好 编辑:程序博客网 时间:2024/05/23 17:28

题意:从三角形顶端沿路径向下到底部,求沿途结点之和最小。

思路:简单DP, 取两肩较小者。

class Solution {public:    int minimumTotal(vector<vector<int>>& triangle) {        if(triangle.size() == 1) return triangle[0][0];                vector<vector<int> > re;        vector<int> t;        t.push_back(triangle[0][0]);        re.push_back(t);        for(int i = 1; i < triangle.size(); ++ i) {            vector<int> tt;                        tt = re.back();            vector<int> rre;            for(int j = 0; j < triangle[i].size(); j ++) {                if(j - 1 < 0) {                    rre.push_back(triangle[i][j] + tt[j]);                    continue;                }                if(j >= tt.size()) {                    rre.push_back(triangle[i][j] + tt[j - 1]);                    continue;                }                if(tt[j] > tt[j - 1]) {                    rre.push_back(triangle[i][j] + tt[j - 1]);                }                else{                    rre.push_back(triangle[i][j] + tt[j]);                }                            }            re.push_back(rre);        }        vector<int> tempre = re.back();        int min = 999999999;        for(int i = 0; i < tempre.size(); ++ i) {            if(min > tempre[i]) min = tempre[i];        }                return min;    }};


0 0