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

C++-এ দেওয়া বাধার অধীনে N*N বাইনারি ম্যাট্রিক্সে সর্বোচ্চ ১ এর সংখ্যা


দেওয়া কাজ হল নিচের বাধাবদ্ধতাগুলো মেনে একটি বাইনারি ম্যাট্রিক্সে সর্বোচ্চ কতগুলো ১ থাকতে পারে তা খুঁজে বের করা।

দুটি ইন্টিজার N এবং X দেওয়া আছে যেখানে X<=N। বাইনারি ম্যাট্রিক্সের আকার হবে N*N এবং X*X আকারের প্রতিটি সাব-ম্যাট্রিক্সে কমপক্ষে একটি শূন্য থাকতে হবে।

উদাহরণ দিয়ে বোঝা যাক

ইনপুট - N=4, X=2

আউটপুট - ১২

ব্যাখ্যা - ফলাফল ম্যাট্রিক্স হবে -

1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1

ইনপুট - N=7, X=3

আউটপুট - ৪৫

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • সর্বোচ্চ ১ পেতে হলে প্রথমে ম্যাট্রিক্সে প্রয়োজনীয় ন্যূনতম শূন্যের সংখ্যা বের করতে হবে।

    সকল ম্যাট্রিক্সে একটি সাধারণ প্যাটার্ন পর্যবেক্ষণ করলে দেখা যায় যে, প্রয়োজনীয় শূন্যের সংখ্যা = (N / X)²

    তাই সর্বোচ্চ ১-এর সংখ্যা = ম্যাট্রিক্সে মোট উপাদান - শূন্যের সংখ্যা

  • MaxOne() ফাংশনে Z নামক একটি ইন্টিজার ভেরিয়েবল তৈরি করুন এবং তাতে প্রয়োজনীয় ন্যূনতম শূন্যের সংখ্যা সংরক্ষণ করুন যা (N / X)²।

  • তারপর total = N*N ইন্টিজার ভেরিয়েবল আরম্ভ করুন ম্যাট্রিক্সের মোট আকার সংরক্ষণের জন্য।

  • শেষে int ans = total - Z আরম্ভ করুন ফাইনাল আউটপুট সংরক্ষণের জন্য এবং ans ফেরত দিন।

C++ প্রোগ্রাম উদাহরণ

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

int MaxOne(int N, int X){
    // প্রয়োজনীয় ন্যূনতম শূন্যের সংখ্যা
    int Z = (N / X);
    Z = Z * Z;
    /* ম্যাট্রিক্সে মোট উপাদান = ম্যাট্রিক্স আকারের বর্গ*/
    int total = N * N;
    // ফাইনাল আউটপুট
    int ans = total - Z;
    return ans;
}

int main(){
    int N = 4;
    int X = 2;
    cout << MaxOne(N, X);
    return 0;
}

আউটপুট

12
  1. দেওয়া সীমাবদ্ধতায় ম্যাট্রিক্সে সবচেয়ে বড় পথ খুঁজে বের করা C++-তে

  2. ম্যাট্রিক্সে ক্যাবিটির সংখ্যা বের করা C++-তে

  3. C++ ব্যবহার করে ম্যাট্রিক্সে সর্বোচ্চ যোগফল করা কলাম বের করা

  4. C++-এ ম্যাট্রিক্সে দেওয়া গুণফলের জোড়া আছে কিনা চেক করা