প্রথম, কয়েকটি সংজ্ঞা:
- প্রদত্ত
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, 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 মাপের size
কার্য
আপনার কোডে দুটি যুক্তি নেওয়া উচিত 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)
দ্বিতীয় পরীক্ষার ক্ষেত্রেও।