यह देखते हुए कि कार्य समान आकार के वर्ग या आयत टुकड़ों की अधिकतम संख्या की गणना करना है जो किसी दिए गए वर्ग टुकड़े को क्षैतिज या लंबवत रूप से कुल N संख्या में काटकर प्राप्त किया जा सकता है।पी>
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है -
इनपुट -एन=8
आउटपुट -25
स्पष्टीकरण − जब 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
आउटपुट -20
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 |
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
यदि एन कटों की संख्या है और हमें परिणामी टुकड़ों को अधिकतम करना है तो समान संख्या में क्षैतिज और लंबवत कटौती करनी होगी।
यदि N सम है तो समान क्षैतिज और ऊर्ध्वाधर कट होंगे और यदि N विषम है, तो क्षैतिज कट ऊर्ध्वाधर कटों से 1 अधिक होंगे या इसके विपरीत।
इसलिए, क्षैतिज =N/2 और ऊर्ध्वाधर कटों की संख्या =N-H.
-
फ़ंक्शन में MaxPieces() क्षैतिज कटौती की संख्या को संग्रहीत करने के लिए एक चर H =N/2 प्रकार 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