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

C++-এ মেট্রিক্স রিশেপ (Reshape the Matrix)


বিভিন্ন প্ল্যাটফর্মে 'reshape' নামে একটি ব্যবহারী ফাংশন থাকে যা একটি মেট্রিক্সকে নতুন আকারে রূপান্তর করে কিন্তু ডেটা একই থাকে। একটি মেট্রিক্স এবং পাঙkti (r) ও কলাম (c) সংখ্যা দেওয়া থাকলে, নতুন মেট্রিক্স তৈরি করতে হবে। যদি নতুন আকার সম্ভব না হয়, তবে মূল মেট্রিক্স ফেরত দিন।

উদাহরণ: ইনপুট [[5,10],[15,20]], row = 1, col = 4 হলে আউটপুট [[5, 10, 15, 20]]।

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

  • একটি টেম্পোরারি অ্যারে temp সংজ্ঞায়িত করুন।
  • আকার r × c的一個 2D অ্যারে res তৈরি করুন।
  • count := 0।
  • মূল মেট্রিক্স nums-এর সব উপাদান temp-এ পুশ করুন।
  • যদি r * c != nums.size() * nums[0].size() হয়, তবে nums রিটার্ন করুন।
  • অন্যথায়, temp থেকে উপাদান নিয়ে res-এ भरুন।
  • res রিটার্ন করুন।

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

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

void print_vector(vector<vector<auto>> 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:
    vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
        vector<int> temp;
        vector<vector<int>> res(r, vector<int>(c));
        int count = 0;
        for (int i = 0; i < nums.size(); i++) {
            for (int j = 0; j < nums[0].size(); j++) {
                temp.push_back(nums[i][j]);
            }
        }
        if (r * c != nums.size() * nums[0].size())
            return nums;
        for (int i = 0; i < r; i++) {
            for (int j = 0; j < c; j++) {
                res[i][j] = temp[count++];
            }
        }
        return res;
    }
};

int main() {
    Solution ob;
    vector<vector<int>> v = {{5,10},{15,20}};
    print_vector(ob.matrixReshape(v, 1, 4));
    return 0;
}

ইনপুট

{{5,10},{15,20}}, 1, 4

আউটপুট

[[5, 10, 15, 20, ],]
  1. C++-এ The Maze III সমস্যা সমাধান

  2. সি++-এ ম্যাট্রিক্সে সর্বোচ্চ উপাদান বের করার প্রোগ্রাম

  3. C++-এ ম্যাট্রিক্সের জিগজ্যাগ (ডায়াগোনাল) ট্রাভার্সাল

  4. সি++-এ স্পায়রাল ম্যাট্রিক্স III (Spiral Matrix III)