Advertisement
lelouche29

topToBottom Samsung

Aug 22nd, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.77 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. #define n 1000
  4.  
  5. int maxSum(int a[][n], int r, int c){
  6.     int dp[n][n];
  7.  
  8.     for(int i=0; i<r; i++)
  9.         for(int j=0; j<c; j++)
  10.             dp[i][j]=0;
  11.  
  12.     dp[0][0]=a[0][0];
  13.    
  14.     for(int i=1; i<c; i++) dp[0][i]= dp[0][i-1] + a[0][i];
  15.  
  16.     for(int i=1; i<r; i++) dp[i][0]= dp[i-1][0] + a[i][0];
  17.  
  18.     for(int i=1; i<r; i++){
  19.         for(int j=1; j<c; j++){
  20.             dp[i][j]=max(dp[i-1][j], dp[i][j-1])  + a[i][j];
  21.         }
  22.     }
  23.     return dp[r-1][c-1];
  24. }
  25. int main() {
  26.     int t;
  27.     cin>>t;
  28.     while(t--){
  29.         int r,c;
  30.         cin>>r>>c;
  31.         int a[n][n];
  32.         for(int i=0; i<r; i++)
  33.             for(int j=0; j<c; j++)
  34.                 cin>>a[i][j];
  35.  
  36.         cout<<maxSum(a,r,c)<<endl;
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement