Print Diagonally-misc
Give a N*N square matrix, return an array of its anti-diagonals.
For Example:
If the matrix is
1 2 3
4 5 6
7 8 9
The output should Return the following :
[
[1],
[2, 4],
[3, 5, 7],
[6, 8],
[9]
]
i.e print the elements of array diagonally.
c++ implementation:
t is the no of test cases:
#include <bits/stdc++.h> using namespace std; #define ll long long int int main() { int t; cin>>t; while(t--) { ll n; cin>>n; ll arr[n][n]; ll i,j; map<ll,vector<ll>>m; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cin>>arr[i][j]; m[i+j].push_back(arr[i][j]); } } for(auto itr=m.begin();itr!=m.end();itr++) { for(auto it=itr->second.begin();it!=itr->second.end();it++) { cout<<*it<<" "; } } cout<<endl; } return 0; }
No comments