Example #1
0
	int minimumTotal(std::vector<std::vector<int>>& triangle,
		std::size_t row,std::size_t col)
	{
		if (row >= triangle.size() || col >= triangle[row].size())
			return 0;

		return triangle[row][col] +
			std::min<int>(minimumTotal(triangle, row + 1, col),
			minimumTotal(triangle, row + 1, col + 1));
	}
Example #2
0
void ArrayQuiz::test120() {
    cout << "LeetCode 120  Triangle  27.3  Medium" << endl;
    vector<vector<int>> triangle{{2}, {3, 4}, {6, 5, 7}, {4, 1, 8, 3}};
    for_each(triangle.cbegin(), triangle.cend(), [&](vector<int> row) {
        for_each(row.cbegin(), row.cend(), [&](int i) { cout << i << " "; });
        cout << endl;
    });
    cout << "Triangle sum = " << minimumTotal(triangle) << endl;
}
Example #3
0
int main() {
    int row = 3;
    int **triangle = (int **)calloc(row, sizeof(int *));
    int i;
    for (i = 0; i < row; i++) {
        triangle[i] = (int *)calloc(row, sizeof(int));
    }
    triangle[0][0] = -1;
    triangle[1][0] = 2; triangle[1][1] = 3;
    triangle[2][0] = 1; triangle[2][1] = -1; triangle[2][2] = -3;

    printf("%d\n", minimumTotal(triangle, row));
    return 0;
}
Example #4
0
        void Main()
        {
			vector<vector<int>>input = { { -1 }, { 2, 3 }, {1,  -1, -3 } };
			print(minimumTotal(input));
        }
Example #5
0
	int minimumTotal1(std::vector<std::vector<int>>& triangle) //the version of recursion
	{
		return minimumTotal(triangle, 0, 0);
	}