👤

Se citeste o matrice patratica de ordin n. Parcurgeti si afisati elementele din matrice incepand cu elementul din coltul stanga sus, mergand paralel cu diagonala secundara, ca in exemplu.
Exemplu: n=4
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
In urma parcurgerii: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
o rezolvare diferita decat cea de pe mcip daca se poate
m-am gandit intai ce e deasupra diagonalei principale dupa diagonala secunda si dupa ce e sub diagonala secundara si un contor t=1 pentru cand afisarea e de sus in jos si -1 pentru cand e de jos in sus, dar nu stiu cum sa implementez


Răspuns :

#include <iostream>
using namespace std;
int a[26][26];

int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n ; i++)
    for (int j = 1; j <= n; j++)
      cin >> a[i][j];
  bool sens = false;
  for (int i = 1; i <= n - 1; i++) {
    if (sens)
      for (int j = 1; j <= i; j++)
        cout << a[(i - j + 1)][j]<< ' ';
    else
      for (int j = i; j >= 1; j--)
        cout << a[(i - j + 1)][j] <<' ';
    sens = !sens;
  }
  for (int i = 1; i <= n; i++) {
      if (sens)
      for (int j = 1; j <= n - i + 1; j++)
        cout << a[(n - j + 1)][(i + j - 1)] << ' ';
    else
       for (int j = n - i + 1; j >= 1; j--)
         cout << a[(n - j + 1)][(i + j - 1)] << ' ';
    sens = !sens;
  }
    return 0;
}