নিম্নলিখিত সীমাবদ্ধতাগুলির সাথে একটি বাইনারি ম্যাট্রিক্সে সর্বাধিক সংখ্যা খুঁজে বের করা টাস্কটি দেওয়া হয়েছে৷
দুটি পূর্ণসংখ্যা N এবং X দেওয়া আছে যেখানে X<=N। বাইনারি ম্যাট্রিক্সের আকার N*N হওয়া উচিত এবং X*X আকারের প্রতিটি সাব-ম্যাট্রিক্সে অন্তত একটি শূন্য থাকা উচিত।
আসুন এখন বুঝি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −
ইনপুট − N=4, X=2
আউটপুট − 12
ব্যাখ্যা − ফলাফল ম্যাট্রিক্স হবে −
1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1
ইনপুট − N=7, X=3
আউটপুট − 45
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
সর্বাধিক সংখ্যাগুলি পেতে, প্রথমে আমাদের প্রদত্ত ম্যাট্রিক্সে প্রয়োজনীয় ন্যূনতম শূন্য সংখ্যা খুঁজে বের করতে হবে৷
সমস্ত ম্যাট্রিক্সে একটি সাধারণ প্যাটার্ন পর্যবেক্ষণ করে, এটি দেখা যায় যে শূন্যের সংখ্যা =(N / X) 2
সুতরাং সর্বাধিক সংখ্যা =ম্যাট্রিক্সের মোট উপাদান - শূন্যের সংখ্যা\
-
ফাংশনে MaxOne() int-এর একটি ভেরিয়েবল Z তৈরি করুন এবং এতে প্রয়োজনীয় ন্যূনতম শূন্য সংখ্যা সংরক্ষণ করুন যা (N / X) 2 এর সমান।
-
তারপর ম্যাট্রিক্সের মোট আকার সঞ্চয় করতে অন্য একটি পরিবর্তনশীল মোট =N*N টাইপের int শুরু করুন।
-
তারপর শেষ পর্যন্ত ইনিশিয়ালাইজ করুন int ans =মোট – Z চূড়ান্ত উত্তর সংরক্ষণ করতে এবং উত্তর ফেরত দিতে।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int MaxOne(int N, int X){ // Minimum number of zeroes that are needed int Z = (N / X); Z = Z * Z; /* Totol elements in matrix = square of the size of the matrices*/ int total =N * N; //Final answer int ans = total - Z; return ans; } int main(){ int N = 4; int X = 2; cout << MaxOne(N, X); return 0; }
আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
12