Spiral Matrix

Write a program to print Spiral Matrix

Example 1:

Input: n=3 // 3*3     
Output
1  2  3  
8  9  4  
7  6  5

Approach:

Java

public class MatrixSpiral {
    public static void main(String[] args) {
        // number of col, row
        int n = 3;
        // create spiral matrix
        int spiral[][] = generateMatrix(n);
        // print matrix
        printMatrix(spiral);
    }

    private static void printMatrix(int[][] matrixA) {
        for (int i = 0; i < matrixA.length; i++) {
            for (int j = 0; j < matrixA.length; j++) {
                System.out.print(matrixA[i][j] + "  ");
            }
            System.out.println();
        }

    }

    public static int[][] generateMatrix(int n) {
        int a[][] = new int[n][n];
        int seq = 0;
        int i = 0;
        int num = n;
        int count = 0;
        for (int j = count; j < (num - count); j++) {
            i = count;
            a[i][j] = ++seq;

            if (j == (n + count - 1)) {

                i = i + 1;
                n = n - 1;

                if (n == 0)
                    break;
                for (int k = 0; k < n; k++) {
                    a[i][j] = ++seq;

                    i = i + 1;
                }
                i = i - 1;
                j = j - 1;

                for (int k = (n - 1); k >= 0; k--) {
                    a[i][j] = ++seq;

                    j = j - 1;
                }
                j = j + 1;
                n = n - 1;
                i = i - 1;

                for (int k = (n - 1); k >= 0; k--) {

                    a[i][j] = ++seq;

                    i = i - 1;
                }
                count = count + 1;

            }

            if (n == 0)
                break;
        }
        return a;

    }
}

C++

#include <bits/stdc++.h>
using namespace  std;

//function to find the spiral
//matrix of dimension n*n
vector<vector<int>> spiralMatrix(int n
{

    //value of the matrix from 1 to n*n
        int i=1;
        int k=0,l=0;
        int it;
        int m=n;

        //matrix for final output
        //initialize with 0
        vector<vector<int>> matrixm , vector<int> (n0));
        //iterate till the end of rows and 
        //colums
        while(k<m&&l<n)
        {
          // get first row from the remaining
          //rows of the matrix
         for(it=l;it<n;it++)
            {
                matrix[k][it]=i;

                //increment to next value
                i++;
            }
           //increment row count from top
           //to down 
            k++;

            //generate the last column from
            //the remaining columns
            for(it=k;it<m;it++)
            {
                matrix[it][n-1]=i;

                //increment for next value
                i++;
            }

            //decrement no of rows
            n--;

            //if their are rows remaing
            if(k<m)
            {

                //generate the last row from the remaning
                //rows
                for(it=n-1;it>=l;it--)
                {
                    matrix[m-1][it]=i;
                    i++;
                }
            //decremenr no of colums
            m--;
            }

            //if thier is any column
            if(l<n)
            {

                //generate the first column
                //from the remaining columns
                for(it=m-1;it>=k;it--)
                {
                    matrix[it][l]=i;
                    i++;
                }
              l++;      
            }
        }
     //return the final result
        return matrix;
              
}

//function to print the matrix
void printMatrix(vector<vector<int>> matrix)
{

    //dimension of square matrix
    int n=matrix.size();

    //iterate till end of rows
    for(int i=0;i<n;i++)
      {

          //iterate till end of columns
          for(int j=0;j<n;j++)
            {
                //print the current cell value
                cout<<matrix[i][j]<<" ";
            }
        cout<<"\n";
      }
}
int main()
{
    // number of col, row
    int n = 3;
    // create spiral matrix
    vector<vector<int>> spiral = spiralMatrix(n);
    // print matrix
    printMatrix(spiral);
}


No comments:

Post a Comment