প্রদত্ত কাজটি হল সমান আকারের সর্বাধিক সংখ্যক বর্গক্ষেত্র বা আয়তক্ষেত্রের টুকরো গণনা করা যা একটি প্রদত্ত বর্গক্ষেত্র টুকরাটি অনুভূমিকভাবে বা উল্লম্বভাবে কাটার মোট N সংখ্যায় কাটার মাধ্যমে পাওয়া যেতে পারে। পি>
আসুন এখন বুঝতে পারি −
একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবেইনপুট − N=8
আউটপুট − ২৫
ব্যাখ্যা − যখন N=8, উল্লম্ব কাটের সংখ্যা =4 এবং অনুভূমিক কাটের সংখ্যা =4।
মোট টুকরো =25
1 | 2 | 3 | 4 | ৷5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | ৷15 |
16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | ৷25 |
ইনপুট৷ − 7
আউটপুট৷ - ২০
1 | 2 | 3 | 4 | ৷5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | ৷15 |
16 | 17 | 18 | 19 | 20 |
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
যদি N হল কাটের সংখ্যা এবং আমাদের ফলস্বরূপ অংশগুলিকে সর্বাধিক করতে হয় তাহলে সমান সংখ্যক অনুভূমিক এবং উল্লম্ব কাট করতে হবে৷
যদি N জোড় হয় তবে সমান অনুভূমিক এবং উল্লম্ব কাট হবে অন্যথায় যদি N বিজোড় হয়, তাহলে অনুভূমিক কাটগুলি উল্লম্ব কাটের চেয়ে 1 বেশি হবে বা বিপরীতভাবে।
অতএব, অনুভূমিক সংখ্যা =N/2 এবং উল্লম্ব কাট =N-H.
-
ফাংশনে MaxPieces() একটি ভেরিয়েবল H =N/2 টাইপের int এর অনুভূমিক কাটের সংখ্যা সংরক্ষণ করে।
-
উল্লম্ব কাটের সংখ্যা সংরক্ষণ করতে int-এর অন্য একটি ভেরিয়েবল V=N-H শুরু করুন।
-
টুকরোগুলির চূড়ান্ত সংখ্যা =(অনুভূমিক সারি)*(উল্লম্ব সারি) =(H+1)*(V+1)
উদাহরণ
#include <bits/stdc++.h> using namespace std; int MaxPieces(int N){ //H is the number of horizontal cuts int H = N / 2; //V is the number of vertical cuts int V = N-H; // maximum number of pieces = (H+1)*(V+1) return ((H + 1) * (V + 1)); } //Main function int main(){ //Number of cuts int N = 7; cout << "Max pieces = "<<MaxPieces(N); return 0; }
আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
20