Ejemplo n.º 1
0
 void minPathSum(int step, vector<vector<int> >& triangle, 
     int index, vector<vector<int> >& minSum)
 {
     if (step == triangle.size() - 1)
     {
         minSum[step][index] = triangle[step][index];
         return;
     }
     if (minSum[step+1][index] == INT_MAX)
         minPathSum(step+1, triangle, index, minSum);
     if (minSum[step+1][index+1] == INT_MAX)
         minPathSum(step+1, triangle, index+1, minSum);
     minSum[step][index] = min(minSum[step+1][index], minSum[step+1][index+1]) + triangle[step][index];
 }
Ejemplo n.º 2
0
 int minimumTotal(vector<vector<int>>& triangle) {
     if (triangle.size() == 0)
         return 0;
     vector<vector<int> > minSum;
     for (int i = 0; i < triangle.size(); ++i)
     {
         vector<int> rowSum(triangle[i].size(), INT_MAX);
         minSum.push_back(rowSum);
     }
     minPathSum(0, triangle, 0, minSum);
     return minSum[0][0];
 }
Ejemplo n.º 3
0
	int main()
	{ 
	   vector<vector<int> > input;
	   vector<int> tmp;
	   tmp.push_back(9);
	   tmp.push_back(1);
	   tmp.push_back(4);
	   tmp.push_back(8);
	   input.push_back(tmp);
	   
	   std::cout<<minPathSum(input);
	}
Ejemplo n.º 4
0
Archivo: 64.c Proyecto: unasm/utils
int main(int argc, const char *argv[])
{
	int a[] = {1,3,1};
	int b[] = {1,5,1};
	int c[] = {4,2,1};
	int *num[3];
	num[0] = a;
	num[1] = b;
	num[2] = c;
	int res = minPathSum(num,3,3);
	printf("%d\n",res);
	return 0;
}
int main() {
    int m = 3, n =2, i;
    int **grid = (int **)malloc(sizeof(int *)* m);
    for (i = 0; i < m; ++i) {
        grid[i] = (int *)malloc(sizeof(int)* n);
        grid[i][0] = 1 + i;
        grid[i][1] = 5 + i;
    }
    // construct the test cases here
    int ans = minPathSum(grid, m, n);
    printf("%d\n", ans);
    system("pause");
    return 0;
}
Ejemplo n.º 6
0
int main() {
    int m, n, i;
    m = n = 3;
    int **grid = (int **) calloc (m, sizeof(int *));
    
    for (i = 0; i < m; i++)
    grid[i] = (int *) calloc (n, sizeof(int));
    
    grid[0][0] = 1; grid[0][1] = 2; grid[0][2] = 3;
    grid[1][0] = 1; grid[1][1] = 2; grid[1][2] = 3;
    grid[2][0] = 1; grid[2][1] = 2; grid[2][2] = 3;
    
    printf("%d\n", minPathSum(grid, m, n));
    return 0;
}
int main() {
	std::vector<std::vector<int>> grid {
									{ 1, 0, 5 },
									{ 2, 3, 1},
									{ 4, 1, 9}
								  };
	for ( size_t i = 0; i < grid.size(); ++i ) {
		for ( size_t j = 0; j < grid[0].size(); ++j ) {
			std::cout << grid[i][j] << " ";
		}
		std::cout << std::endl;
	}
	std::cout << "Min cost for above grid from moving top left to bottom right is "
			  <<  minPathSum(grid) << std::endl;
	return 0;
}
Ejemplo n.º 8
0
int main(){
    vector<vector<int> > grid;
	int arr[] = {3,5,1,2,4};
	vector<int> nums( arr, arr+ sizeof(arr)/sizeof(int));
    grid.push_back(nums);

    int arr1[] = {3,5,1,2,4};
    vector<int> nums1( arr1, arr1+ sizeof(arr1)/sizeof(int));
    grid.push_back(nums1);

    int arr2[] = {3,5,1,2,4};
    vector<int> nums2( arr2, arr2+ sizeof(arr2)/sizeof(int));
    grid.push_back(nums2);

	cout<< minPathSum(grid)<<endl;
	return 0;
}
Ejemplo n.º 9
0
void testMinPathSum(){
    vector<vector<int>> grid = {{1,2,3},{1,2,3},{1,2,3}};
    int res = minPathSum(grid);
    printf("%d\n",res);
}
Ejemplo n.º 10
0
int main() {
    std::vector<std::vector<int>> grid = { {1, 2},
                                           {3, 0} };
    assert(minPathSum(grid) == 3);
    return 0;
}