int minPathSum(vector<vector<int>> &grid) { int m = grid.size(); if (m==0) return 0; int n = grid[0].size(); if (n==0) return 0; const int MAX_INT = 0x7fffffff; vector<vector<int>> minSum(m, vector<int>(n, MAX_INT)); minSum[0][0] = grid[0][0]; for (int i=0; i<m; ++i) for (int j=0; j<n; ++j) if (i!=0 || j!=0) if (i==0) minSum[i][j] = minSum[i][j-1]+grid[i][j]; else if (j==0) minSum[i][j] = minSum[i-1][j]+grid[i][j]; else minSum[i][j] = min(minSum[i-1][j], minSum[i][j-1])+grid[i][j]; return minSum[m-1][n-1]; }
int main() { int arr[] = {4, 13, 2, 3, 1}; int size = sizeof(arr)/sizeof(arr[0]); int i; for (i = 1; 1; ++i) { if (!minSum(arr, size, i)) { printf("\n Min sum = %d", i); break; } if (i > 10000000) { printf("\nSeems too big"); break; } } printf("\n"); return 0; }