Advertisement
Guest User

Untitled

a guest
Jul 31st, 2015
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. class Solution {
  2. public:
  3. int calculateMinimumHP(vector< vector<int> >& dungeon) {
  4. if(dungeon.size() == 0) return 0;
  5.  
  6. int n = dungeon.size(), m = dungeon[0].size();
  7. vector< vector<int> > dp(n, vector<int>(m, INT_MAX));
  8.  
  9. if(dungeon[n-1][m-1] < 0){
  10. dp[n-1][m-1] = -dungeon[n-1][m-1] + 1;
  11. }else{
  12. dp[n-1][m-1] = 1;
  13.  
  14. }
  15. for(int i = n-1; i > -1; i--){
  16. for (int j = m-1; j > -1; j--){
  17. if(j-1>=0)
  18. if (dungeon[i][j-1] > 0){
  19. if (dp[i][j] <= dungeon[i][j-1]){
  20. dp[i][j-1] = 1;
  21. }else{
  22. dp[i][j-1] = min(dp[i][j-1], - dungeon[i][j-1] + dp[i][j]);
  23. }
  24. }else{
  25. dp[i][j-1] = min(dp[i][j-1], dp[i][j] - dungeon[i][j-1]);
  26. }
  27.  
  28. if(i-1>=0)
  29. if (dungeon[i-1][j] > 0){
  30. if (dp[i][j] <= dungeon[i-1][j]){
  31. dp[i-1][j] = 1;
  32. }else{
  33. dp[i-1][j] = min(dp[i-1][j], - dungeon[i-1][j] + dp[i][j]);
  34. }
  35. }else{
  36. dp[i-1][j] = min(dp[i-1][j], dp[i][j] - dungeon[i-1][j]);
  37. }
  38. }
  39. }
  40.  
  41. return dp[0][0];
  42. }
  43. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement