forked from abhishekSharmaGithub/cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMinimum Path Sum
More file actions
53 lines (41 loc) · 1.37 KB
/
Copy pathMinimum Path Sum
File metadata and controls
53 lines (41 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Solution {
/* private:
int solve(int i,int j,vector<vector<int>>& grid,vector<vector<int>>dp){
if(i==0 && j==0){
return grid[i][j];
}
if(i<0|| j<0){
return 1e8;
}
if(dp[i][j]!=-1){
return dp[i][j];
}
int left=grid[i][j]+solve(i-1,j,grid,dp);
int right=grid[i][j]+solve(i,j-1,grid,dp);
dp[i][j]=min(left,right);
return dp[i][j];
}*/
public:
int minPathSum(vector<vector<int>>& grid) {
int n=grid.size();
int m=grid[0].size();
// vector<vector<int>>dp(r,vector<int>(c,-1));
// return solve(r-1,c-1,grid,dp);
vector<vector<int>>dp(n,vector<int>(m,0));
for(int i=0; i<n ; i++){
for(int j=0; j<m; j++){
if(i==0 && j==0){ dp[i][j] = grid[i][j];}
else{
int up = grid[i][j];
if(i>0) up += dp[i-1][j];
else up += 1e9;
int left = grid[i][j];
if(j>0) left+=dp[i][j-1];
else left += 1e9;
dp[i][j]=min(up,left);
}
}
}
return dp[n-1][m-1];
}
};