12 June 2018

print the elements of a square matrix in spiral order from the center

i.p:
 1    2    3   4
 5    6    7   8
 9   10  11 12
13  14  15 15

o/p:
10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1


public class NewClass2
   {

    void print(int br[])
    {
        for(int i=br.length-1;i>=0;i--)
        {
            System.out.print(br[i]+" ");
        }
    }

    void reversespiral(int ar[][],int n,int br[])
       {
           int l=0,t=0,r=n-1,b=n-1,c=0;
           while(t<b && l<r)
           {
               for(int i=l;i<=r;i++)
               {
                   br[c++]=ar[t][i];
               }
                 t++;
               for(int i=t;i<=b;i++)
               {
                   br[c++]=ar[i][r];
               }
                 r--;
               for(int i=r;i>=l;i--)
               {
                   br[c++]=ar[b][i];
               }
               b--;
               for(int i=b;i>=t;i--)
               {
                   br[c++]=ar[i][l];
               }l++;
           } 
       }


     
public static void main(String args[])
      {
         
          NewClass2 ob=new NewClass2();
          int n=4,c=1;
          int ar[][]=new int[n][n];
          for(int i=0;i<n;i++)
          {
              for(int j=0;j<n;j++)
              {
                  ar[i][j]=c++;
              }
          }
            int br[]=new int[n*n];
           ob.reversespiral(ar,n,br);
           ob.print(br);
      }

}


No comments:

Post a Comment