Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. #define N 15
  2. #include<stdio.h>
  3. #include<math.h>
  4. //input problem 18 datas
  5. int dp[N][N];//memorized array for DP
  6. int a[N][N] =
  7. {
  8. {75,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  9. {95,64,0,0,0,0,0,0,0,0,0,0,0,0,0},
  10. {17,47,82,0,0,0,0,0,0,0,0,0,0,0,0},
  11. {18,35,87,10,0,0,0,0,0,0,0,0,0,0,0},
  12. {20,4,82,47,65,0,0,0,0,0,0,0,0,0,0},
  13. {19,1,23,75,3,34,0,0,0,0,0,0,0,0,0},
  14. {88,2,77,73,7,63,67,0,0,0,0,0,0,0,0},
  15. {99,65,4,28,6,16,70,92,0,0,0,0,0,0,0},
  16. {41,41,26,56,83,40,80,70,33,0,0,0,0,0,0},
  17. {41,48,72,33,47,32,37,16,94,29,0,0,0,0,0},
  18. {53,71,44,65,25,43,91,52,97,51,14,0,0,0,0},
  19. {70,11,33,28,77,73,17,78,39,68,17,57,0,0,0},
  20. {91,71,52,38,17,14,91,43,58,50,27,29,48,0,0},
  21. {63,66,4,68,89,53,67,30,73,16,69,87,40,31,0},
  22. {4,62,98,27,23,9,70,98,73,93,38,53,60,4,23}
  23. };
  24.  
  25. //return larger number a or b
  26. int max(int a,int b)
  27. {
  28. return (a > b) ? a : b;
  29. }
  30.  
  31. int dfs(int i,int j,int sum)
  32. {
  33. //before dp[i][j] memorized
  34. if(dp[i][j] == 0)
  35. {
  36. if(i==(N-1) || j == (N-1))
  37. {
  38. return sum;
  39. }
  40. else
  41. {
  42. sum = max(dfs(i+1,j,sum+a[i+1][j]),dfs(i+1,j+1,sum+a[i+1][j+1]));
  43. }
  44. dp[i][j]== sum;
  45. return sum;
  46. }
  47. //after dp[i][j] memorized
  48. else
  49. {
  50. return dp[i][j];
  51. }
  52. }
  53.  
  54. int main()
  55. {
  56. printf("max=%d\n",dfs(0,0,a[0][0]));
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement