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