Tutorialspoint.dev

Shift matrix elements row-wise by k

Given a square matrix mat[][] and a number k. The task is to shift first k elements of each row in the right of the matrix.

Examples :

Input : mat[N][N] = {{1, 2, 3},
                     {4, 5, 6},
                     {7, 8, 9}}
        k = 2
Output :mat[N][N] = {{3, 1, 2}
                     {6, 4, 5}
                     {9, 7, 8}}

Input : mat[N][N] = {{1, 2, 3, 4}
                     {5, 6, 7, 8}
                     {9, 10, 11, 12}
                     {13, 14, 15, 16}}
        k = 2
Output :mat[N][N] = {{3, 4, 1, 2}
                     {7, 8, 5, 6}
                     {11, 12, 9, 10}
                     {15, 16, 13, 14}}

Note: Matrix should be a square matrix


C++

// C++ program to shift k elements in a matrix.
#include <bits/stdc++.h>
using namespace std;
#define N 4
  
// Function to shift first k elements of 
// each row of matrix.
void shiftMatrixByK(int mat[N][N], int k)
{
    if (k > N) {
        cout << "shifting is not possible" << endl;
        return;
    }
      
    int j = 0;
    while (j < N) {
          
        // Print elements from index k
        for (int i = k; i < N; i++)
            cout << mat[j][i] << " ";
              
        // Print elements before index k
        for (int i = 0; i < k; i++)
            cout << mat[j][i] << " ";
              
        cout << endl;
        j++;
    }
}
  
// Driver code
int main()
{
    int mat[N][N] = {{1, 2, 3, 4},
                     {5, 6, 7, 8},
                     {9, 10, 11, 12},
                     {13, 14, 15, 16}};
    int k = 2;
      
    // Function call
    shiftMatrixByK(mat, k);
      
    return 0;
}

Java

// Java program to shift k elements in a 
// matrix.
import java.io.*;
import java.util.*;
  
public class GFG {
       
    static int N = 4;
       
    // Function to shift first k elements 
    // of each row of matrix.
    static void shiftMatrixByK(int [][]mat,
                                    int k)
    {
        if (k > N) {
            System.out.print("Shifting is"
                        + " not possible");
            return;
        }
           
        int j = 0;
        while (j < N) {
               
            // Print elements from index k
            for (int i = k; i < N; i++)
                System.out.print(mat[j][i] + " ");
                   
            // Print elements before index k
            for (int i = 0; i < k; i++)
                System.out.print(mat[j][i] + " ");
                   
            System.out.println();
            j++;
        }
    }
       
    // Driver code
    public static void main(String args[])
    {
        int [][]mat = new int [][]
                    { {1, 2, 3, 4},
                      {5, 6, 7, 8},
                      {9, 10, 11, 12},
                      {13, 14, 15, 16} };
        int k = 2;
           
        // Function call
        shiftMatrixByK(mat, k);
    }
}
   
// This code is contributed by Manish Shaw 
// (manishshaw1)

Python3

# Python3 program to shift k 
# elements in a matrix.
  
N = 4
# Function to shift first k 
# elements of each row of 
# matrix.
def shiftMatrixByK(mat, k):
    if (k > N) :
        print ("shifting is"
            " not possible")
        return
      
    j = 0
    while (j < N) :
          
        # Print elements from
        # index k
        for i in range(k, N):
            print ("{} "
            format(mat[j][i]), end="")
              
        # Print elements before
        # index k
        for i in range(0, k):
            print ("{} "
            format(mat[j][i]), end="")
              
        print ("")
        j = j + 1
  
# Driver code
mat = [[1, 2, 3, 4],
       [5, 6, 7, 8],
       [9, 10, 11, 12],
       [13, 14, 15, 16]]
k = 2
  
# Function call
shiftMatrixByK(mat, k)
  
# This code is contributed by 
# Manish Shaw (manishshaw1)

C#

// C# program to shift k elements in a 
// matrix.
using System;
  
class GFG {
      
    static int N = 4;
      
    // Function to shift first k elements 
    // of each row of matrix.
    static void shiftMatrixByK(int [,]mat,
                                    int k)
    {
        if (k > N) {
            Console.WriteLine("shifting is"
                        + " not possible");
            return;
        }
          
        int j = 0;
        while (j < N) {
              
            // Print elements from index k
            for (int i = k; i < N; i++)
                Console.Write(mat[j,i] + " ");
                  
            // Print elements before index k
            for (int i = 0; i < k; i++)
                Console.Write(mat[j,i] + " ");
                  
            Console.WriteLine();
            j++;
        }
    }
      
    // Driver code
    public static void Main()
    {
        int [,]mat = new int [,]
                    { {1, 2, 3, 4},
                      {5, 6, 7, 8},
                      {9, 10, 11, 12},
                      {13, 14, 15, 16} };
        int k = 2;
          
        // Function call
        shiftMatrixByK(mat, k);
    }
}
  
// This code is contributed by Manish Shaw 
// (manishshaw1)

PHP

<?php
// PHP program to shift k 
// elements in a matrix.
  
// Function to shift first k 
// elements of each row of matrix.
function shiftMatrixByK($mat, $k)
{
    $N = 4;
    if ($k > $N
    {
        echo ("shifting is not possible ");
        return;
    }
      
    $j = 0;
    while ($j < $N
    {
          
        // Print elements from index k
        for ($i = $k; $i < $N; $i++)
            echo ($mat[$j][$i]." ");
              
        // Print elements before index k
        for ($i = 0; $i < $k; $i++)
            echo ($mat[$j][$i]." ");
              
        echo (" ");
        $j++;
    }
}
  
// Driver code
$mat = array(array(1, 2, 3, 4),
             array(5, 6, 7, 8),
             array(9, 10, 11, 12),
             array(13, 14, 15, 16));
$k = 2;
      
// Function call
shiftMatrixByK($mat, $k);
  
// This code is contributed by 
// Manish Shaw(manishshaw1)
?>

Output :

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


This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter