কম্পিউটার

সর্বাধিক প্রদত্ত আকারের আয়তক্ষেত্র যা সি তে কাগজের শীট থেকে কাটা যায়


আমাদের কাগজের শীটের মাত্রা দেওয়া হয়েছে, এটির দৈর্ঘ্য L, এবং প্রস্থ B। এছাড়াও, আমাদেরকে একটি ছোট আয়তক্ষেত্রের মাত্রা দেওয়া হয়েছে, এটির দৈর্ঘ্য l এবং প্রস্থ b। লক্ষ্য হল কাগজের একটি শীট থেকে কাটা যায় এমন সর্বাধিক সংখ্যক ছোট আয়তক্ষেত্র খুঁজে বের করা।

আমরা নিম্নলিখিত পদক্ষেপগুলি করব -

  • প্রথমত, আমরা শীট এবং আয়তক্ষেত্রের যথাক্রমে অনুভূমিক প্রান্তিককরণ, দৈর্ঘ্য L এবং l নেব। L দ্বারা l এবং B দ্বারা b সারিবদ্ধ করা শুরু করুন এবং আয়তক্ষেত্রগুলি গণনা করুন।

  • তারপর উল্লম্ব প্রান্তিককরণেও একই কাজ করুন। আবার গুনুন। গণনার সর্বোচ্চ মান ফেরত দিন।

আসুন একটি উদাহরণ দিয়ে বুঝতে পারি।

ইনপুট

Sheet L=18, B=6 Rectangle l=4, b=3

আউটপুট

Maximum rectangles: 8

ব্যাখ্যা

Horizontal 18/4=4 6/3=2 2*4=8 rectangles possible
Vertical 18/3=6 6/4=1 6*1=6 rectangles possible
Maximum rectangles here is 8

ইনপুট

Sheet L=10, B=6 Rectangle l=4, b=2

আউটপুট

Maximum rectangles: 6

ব্যাখ্যা

Horizontal 10/4=2 6/2=3 2*3=6 rectangles possible
Vertical 10/2=5 6/4=1 5*1=5 rectangles possible
Maximum rectangles here is 6

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

  • ভেরিয়েবল দৈর্ঘ্য এবং প্রস্থ শীটের মাত্রা সংরক্ষণ করতে ব্যবহৃত হয়।

  • ভেরিয়েবল len এবং bre আয়তক্ষেত্রের মাত্রা সংরক্ষণ করতে ব্যবহৃত হয়।

  • ফাংশন maxRectangles (int L, int B, int l, int b) শীট এবং আয়তক্ষেত্রের মাত্রা নেয় এবং সম্ভাব্য সর্বাধিক আয়তক্ষেত্র প্রদান করে।

  • numh এবং numv ভেরিয়েবলগুলি অনুভূমিকভাবে এবং উল্লম্বভাবে কাটা যায় এমন আয়তক্ষেত্রের সংখ্যা সংরক্ষণ করতে ব্যবহৃত হয়৷

  • অনুভূমিকভাবে, ভাগ করুন cols=L/l এবং rows=B/b, আয়তক্ষেত্রগুলি সম্ভব, numh=cols*সারি।

  • উল্লম্বভাবে, ভাগ করুন cols=L/b এবং সারি=B/l, আয়তক্ষেত্রগুলি সম্ভব, numv=cols*সারি।

  • উপরের দুটি ধাপে numh বা numv প্রাপ্ত ফলাফল হিসাবে সর্বাধিক মান ফেরত দিন।

উদাহরণ

#include <stdio.h>
int maxRectangles (int L, int B, int l, int b){
   int numh = 0, numv = 0;
   // Cut rectangles horizontally if possible
   if (l <= L && b <= B){
      // One rectangle is a single cell
      int cols = B / b;
      int rows = L / l;
      // Total rectangles = total cells
      numh = rows * cols;
   }
   // Cut rectangles vertically if possible
   if (l <= B && b <= L){
      int cols = L / b;
      int rows = B / l;
      numv = rows * cols;
   }
   // Return the maximum possible rectangles
   return numh>numv?numh:numv;
}
// Driver code
int main (){
   int Length = 18;
   int Breadth =6;
   int len = 4, bre = 3;
   printf("Maximum rectangles: %d",maxRectangles(Length,Breadth,len,bre));
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Maximum given sized rectangles that can be cut out of a sheet of paper: 8

  1. সর্বাধিক সংখ্যা 2×2 বর্গক্ষেত্র যা C তে একটি সমদ্বিবাহু ত্রিভুজের ভিতরে ফিট করা যেতে পারে

  2. একটি গ্রাফ থেকে সর্বাধিক স্কোর কমানো যেতে পারে তা খুঁজে বের করতে C++ প্রোগ্রাম

  3. সর্বাধিক বিশপ যা C++ এ N*N চেসবোর্ডে স্থাপন করা যেতে পারে

  4. পাইথনে যে কয়েন সংগ্রহ করা যায় তার সর্বাধিক সংখ্যা খুঁজে বের করতে সমস্যা