数字三角,经典动归题。
编码时可状态压缩成1维数组
代码:
1 int minimumTotal(vector<vector<int> > &triangle) { 2 if (triangle.empty()) return -1; 3 4 vector<int> layer(triangle[triangle.size() - 1]); 5 6 for (int i = triangle.size() - 2; i >= 0; i--) { 7 vector<int> upperLayer; 8 for (int j = 0; j <= i; j++) 9 upperLayer.push_back(triangle[i][j] + min(layer[j], layer[j + 1])); 10 layer = upperLayer; 11 } 12 13 return layer[0]; 14 }