ก่อนคำจำกัดความไม่กี่:
- รับ
n
และk
พิจารณารายการที่เรียงลำดับของMultisetsที่แต่ละชุดที่เราเลือก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, 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)
การชี้แจงว่าโลภหมายถึงอะไร: สำหรับแต่ละเซ็ตนั้นเราจะดูว่าสามารถเพิ่มเข้าไปในส่วนที่มีอยู่ได้หรือไม่ ถ้าเราสามารถเพิ่มมันได้ หากเราไม่สามารถเริ่มส่วนใหม่ได้ เราดูชุดย่อยตามลำดับที่เรียงไว้ในตัวอย่างที่ให้ไว้ด้านบน
เอาท์พุต
คุณสามารถแสดงผลการแบ่งพาร์ติชันในรูปแบบที่เหมาะสมตามที่คุณต้องการ อย่างไรก็ตามหลายชุดควรเขียนในแนวนอนในหนึ่งบรรทัด นั่นคือ Multiset แต่ละอันไม่ควรเขียนในแนวตั้งหรือกระจายข้ามหลายบรรทัด คุณสามารถเลือกวิธีแยกการแสดงชิ้นส่วนในเอาต์พุต
สมมติฐาน
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)
กรณีทดสอบครั้งที่สอง