কম্পিউটার টিউটোরিয়াল

২D গ্রিড শিফট করা (Shift 2D Grid) C++-এ

সমস্যা বিবরণ

একটি m x n আকারের ২D গ্রিড এবং একটি ভেরিয়েবল k দেওয়া আছে। গ্রিডকে k বার শিফট করতে হবে। শিফট অপারেশন:

  • G[i, j] → G[i, j+1]
  • G[i, n-1] → G[i+1, 0]
  • G[m-1, n-1] → G[0, 0]

উদাহরণ: ৩x৩ গ্রিড ১ বার শিফট করলে আউটপুট নিচের মতো হবে।

সমাধানের ধাপসমূহ

  • শিফট অপারেশন মাট্রিক্স ইনপুট নেবে।
  • n = রো সংখ্যা, m = কলাম সংখ্যা, x = বটম-রাইট এলিমেন্ট।
  • i = n-1 থেকে ০ পর্যন্ত, j = m-1 থেকে ০ পর্যন্ত লুপ:
    • j=0 এবং i>0 হলে G[i][j] = G[i-1][m-1]
    • j>0 হলে G[i][j] = G[i][j-1]
  • G[0][0] = x
  • k বার শিফট অপারেশন কল করুন।
  • গ্রিড রিটার্ন করুন।

C++ কোড উদাহরণ

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

void print_vector(vector<vector<int>> v) { 
    cout << "["; 
    for (int i = 0; i < v.size(); i++) { 
        cout << "["; 
        for (int j = 0; j < v[i].size(); j++) 
            cout << v[i][j] << ", "; 
        cout << "],"; 
    } 
    cout << "]" << endl; 
} 

class Solution { 
public: 
    void shift(vector<vector<int>>& grid) { 
        int n = grid.size(); 
        int m = grid[0].size(); 
        int x = grid[n-1][m-1]; 
        for (int i = n-1; i >= 0; i--) { 
            for (int j = m-1; j >= 0; j--) { 
                if (j == 0 && i > 0) 
                    grid[i][j] = grid[i-1][m-1]; 
                else if (j > 0) 
                    grid[i][j] = grid[i][j-1]; 
            } 
        } 
        grid[0][0] = x; 
    } 
    vector<vector<int>> shiftGrid(vector<vector<int>>& g, int k) { 
        while (k--) shift(g); 
        return g; 
    } 
}; 

int main() { 
    Solution ob; 
    vector<vector<int>> mat = {{1,2,3},{4,5,6},{7,8,9}}; 
    print_vector(ob.shiftGrid(mat, 1)); 
}

ইনপুট

{{1,2,3},{4,5,6},{7,8,9}} 1

আউটপুট

[[9, 1, 2, ],[3, 4, 5, ],[6, 7, 8, ],]
  1. C++-এ Line Reflection: ২D প্লেনে বিন্দুগুলোর Y-অক্ষ সমান্তরাল প্রতিফলন লাইন আছে কিনা যাচাই করা

  2. C++-এ ডায়াগোনাল ট্রায়ভার্স II

  3. প্রসেস কিল করা (Kill Process) C++-এ

  4. স্কোয়ারেল সিমুলেশন (Squirrel Simulation) C++-এ