Vladislav_Bezruk

Untitled

Nov 15th, 2021 (edited)
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #define max(a, b, c) max(a, max(b, c))
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.    
  9.     int N, uS, dS, rS;
  10.    
  11.     cout << "Enter size of array: ";
  12.     cin >> N;
  13.    
  14.     int arr[N][N], maxArr[N][N];
  15.    
  16.     cout << endl << "Enter array:" << endl;
  17.    
  18.     for (int i = 0; i < N; i++) {
  19.         for (int j = 0; j < N; j++) {
  20.             cin >> arr[i][j];
  21.             maxArr[i][j] = arr[i][j];
  22.         }
  23.     }
  24.    
  25.     for (int i = 0; i < N; i++) {
  26.         for (int j = N - 1; j >= 0; j--) {
  27.             if (i != 0 || j != N - 1) {
  28.                 uS = dS = rS = -100;
  29.                
  30.                 if (i - 1 >= 0) {
  31.                     uS = maxArr[i - 1][j];
  32.                 }
  33.                 if (j + 1 < N) {
  34.                     rS = maxArr[i][j + 1];
  35.                 }
  36.                 if (i - 1 >= 0 && j + 1 < N) {
  37.                     dS = maxArr[i - 1][j + 1];
  38.                 }
  39.                
  40.                 maxArr[i][j] += max(uS, rS, dS);
  41.             }
  42.         }
  43.     }
  44.    
  45.     cout << endl << "Array after reverse:" << endl;
  46.     for (int i = 0; i < N; i++) {
  47.         for (int j = 0; j < N; j++) {
  48.             cout << maxArr[i][j] << " ";
  49.         }
  50.         cout << endl;
  51.     }
  52.    
  53.     cout << endl << "Way: " << endl;
  54.    
  55.     int x = N - 1, y = 0;
  56.    
  57.     while (x != 0 || y != N - 1) {
  58.         uS = dS = rS = -100;
  59.                
  60.         if (x - 1 >= 0) {
  61.             uS = maxArr[x - 1][y];
  62.         }
  63.         if (y + 1 < N) {
  64.             rS = maxArr[x][y + 1];
  65.         }
  66.         if (x - 1 >= 0 && y + 1 < N) {
  67.             dS = maxArr[x - 1][y + 1];
  68.         }
  69.        
  70.         int maxS = max(uS, rS, dS);
  71.        
  72.         if (uS == maxS) {
  73.             x--;
  74.             cout << "Up ";
  75.             continue;
  76.         }
  77.         if (rS == maxS) {
  78.             y++;
  79.             cout << "Right ";
  80.             continue;
  81.         }
  82.        
  83.         x--; y++;
  84.         cout << "Diag ";
  85.         continue;
  86.     }
  87.    
  88.     cout << endl << endl << "Max = " << maxArr[N - 1][0] << endl;
  89.    
  90.     return 0;
  91. }
Add Comment
Please, Sign In to add comment