सबसे पहले, कुछ परिभाषाएँ:
- दिया
n
औरk
, मल्टीसेट्स की सॉर्ट की गई सूची पर विचार करें , जहां प्रत्येक मल्टीसेट के लिए हम पुनरावृत्ति के साथk
संख्या चुनते हैं{0, 1, ..., n-1}
।
उदाहरण के लिए, के लिए n=5
और k=3
, हमने:
[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 1, 1), ( 0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 2, 2), (0, 2, 3), (0, 2, 4), (0,) 3, 3), (0, 3, 4), (0, 4, 4), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 1) 4), (1, 2, 2), (1, 2, 3), (1, 2, 4), (1, 3, 3), (1, 3, 4), (1, 4, 4) , (2, 2, 2), (2, 2, 3), (2, 2, 4), (2, 3, 3), (2, 3, 4), (2, 4, 4), ( 3, 3, 3), (3, 3, 4), (3, 4, 4), (4, 4, 4)]
- एक भाग संपत्ति के साथ मल्टीसेट की एक सूची है कि भाग में सभी मल्टीसेट के चौराहे का आकार कम से कम है
k-1
। यही कारण है कि हम सभी मल्टीसेट्स लेते हैं और उन्हें (मल्टीसेट चौराहे का उपयोग करके) एक ही बार में इंटरसेक्ट करते हैं। उदाहरण के लिए,[(1, 2, 2), (1, 2, 3), (1, 2, 4)]
एक हिस्सा है क्योंकि इसका चौराहा आकार 2 का है, लेकिन[(1, 1, 3),(1, 2, 3),(1, 2, 4)]
ऐसा नहीं है, क्योंकि इसका प्रतिच्छेदन आकार 1 का है।
कार्य
आपका कोड दो तर्क लेना चाहिए n
और k
। इसके बाद लालची को इन मल्टीसेट के माध्यम से क्रमबद्ध क्रम में जाना चाहिए और सूची के कुछ हिस्सों का उत्पादन करना चाहिए। मामले के लिए n=5, k=3
, सही विभाजन है:
(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4)
(0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 1, 4)
(0, 2, 2), (0, 2, 3), (0, 2, 4)
(0, 3, 3), (0, 3, 4)
(0, 4, 4)
(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 4)
(1, 2, 2), (1, 2, 3), (1, 2, 4)
(1, 3, 3), (1, 3, 4)
(1, 4, 4)
(2, 2, 2), (2, 2, 3), (2, 2, 4)
(2, 3, 3), (2, 3, 4)
(2, 4, 4)
(3, 3, 3), (3, 3, 4)
(3, 4, 4), (4, 4, 4)
यहाँ एक और उदाहरण है n = 4, k = 4
।
(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 0, 2), (0, 0, 0, 3)
(0, 0, 1, 1), (0, 0, 1, 2), (0, 0, 1, 3)
(0, 0, 2, 2), (0, 0, 2, 3)
(0, 0, 3, 3)
(0, 1, 1, 1), (0, 1, 1, 2), (0, 1, 1, 3)
(0, 1, 2, 2), (0, 1, 2, 3)
(0, 1, 3, 3)
(0, 2, 2, 2), (0, 2, 2, 3)
(0, 2, 3, 3), (0, 3, 3, 3)
(1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3)
(1, 1, 2, 2), (1, 1, 2, 3)
(1, 1, 3, 3)
(1, 2, 2, 2), (1, 2, 2, 3)
(1, 2, 3, 3), (1, 3, 3, 3)
(2, 2, 2, 2), (2, 2, 2, 3)
(2, 2, 3, 3), (2, 3, 3, 3)
(3, 3, 3, 3)
लालची का क्या अर्थ है: इसके बदले में प्रत्येक मल्टीसेट के लिए हम देखते हैं कि क्या इसे मौजूदा हिस्से में जोड़ा जा सकता है। अगर हम इसे जोड़ सकते हैं। अगर यह हम एक नया हिस्सा शुरू नहीं कर सकते। हम ऊपर दिए गए उदाहरण के अनुसार क्रमबद्ध क्रम में मल्टीसेट को देखते हैं।
उत्पादन
आप अपनी पसंद के किसी भी समझदार प्रारूप में विभाजन को आउटपुट कर सकते हैं। हालांकि, एक लाइन पर क्षैतिज रूप से मल्टीसेट लिखा जाना चाहिए। यह एक व्यक्तिगत मल्टीसेट है जिसे लंबवत नहीं लिखा जाना चाहिए या कई लाइनों में फैला हुआ नहीं होना चाहिए। आप चुन सकते हैं कि आप आउटपुट में भागों के प्रतिनिधित्व को कैसे अलग करते हैं।
मान्यताओं
हम ऐसा मान सकते हैं n >= k > 0
।
(0, 4, 4)
अपने आप से क्यों है ? आपके विवरण को देखते हुए, मुझे लगता है कि इसका "भाग" होगा (0, 4, 4), (1, 4, 4), (2, 4, 4), (3, 4, 4), (4, 4, 4)
। इसी तरह (0, 0, 3, 3)
दूसरे टेस्ट केस के लिए।