मान लीजिए कि हमारे पास ईंटों नामक संख्याओं की एक सूची है और दो अन्य मान चौड़ाई और ऊंचाई हैं। ईंटों में प्रत्येक तत्व [i] एक ईंट का प्रतिनिधित्व करता है जिसकी लंबाई ईंटें [i] इकाइयाँ और चौड़ाई 1 इकाई है। हमें ईंटों को बिछाने के तरीकों की संख्या का पता लगाना है ताकि हमें दी गई चौड़ाई और ऊंचाई के साथ ईंटों का पूरा लेआउट मिल सके। हम ईंटों का पुन:उपयोग कर सकते हैं लेकिन केवल क्षैतिज रूप से रखी जा सकती हैं।
इसलिए, यदि इनपुट ईंटों की तरह है =[2, 1] चौड़ाई =3 ऊंचाई =2, तो आउटपुट 9 होगा क्योंकि -
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- w :=चौड़ाई के समान आकार की एक सूची और पहले स्थान पर 1 डालें, बाकी 0 हैं
- मैं के लिए 0 से चौड़ाई की सीमा में, करते हैं
- अगर w[i] शून्य नहीं है, तो
- ईंटों में प्रत्येक x के लिए, करें
- यदि मैं + x <=चौड़ाई, तो
- w[i + x] :=w[i + x] + w[i]
- यदि मैं + x <=चौड़ाई, तो
- ईंटों में प्रत्येक x के लिए, करें
- अगर w[i] शून्य नहीं है, तो
- वापसी w[चौड़ाई]^ऊंचाई
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(bricks, width, height): w = [1] + [0] * width for i in range(width): if w[i]: for x in bricks: if i + x <= width: w[i + x] += w[i] return w[width] ** height bricks = [2, 1] width = 3 height = 2 print(solve(bricks, width, height))
इनपुट
[2, 1], 3, 2
आउटपुट
9