দেওয়া একটি interger n; কাজ হল সেই nম অবস্থানে কাতালান নম্বর খুঁজে বের করা। সুতরাং, প্রোগ্রামটি করার আগে আমাদের অবশ্যই জানতে হবে একটি কাতালান নম্বর কী?
ক্যাটলান সংখ্যা হল প্রাকৃতিক সংখ্যার ক্রম, যা বিভিন্ন গণনা সংখ্যা সমস্যার আকারে ঘটে।
কাতালান সংখ্যা C0, C1, C2, … Cn সূত্র দ্বারা চালিত হয় −
$$c_{n}=\frac{1}{n+1}\binom{2n}{n} =\frac{2n!}{(n+1)!n!}$$
প্রতি n =0, 1, 2, 3, … এর জন্য কয়েকটি কাতালান সংখ্যা হল 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, …
সুতরাং আমরা যদি n =3 প্রবেশ করি তাহলে আমাদের প্রোগ্রাম থেকে আউটপুট হিসাবে 5 পাওয়া উচিত
কাতালান সংখ্যার কয়েকটি অ্যাপ্লিকেশন −
- n কী দিয়ে সম্ভাব্য বাইনারি অনুসন্ধান গাছের সংখ্যা গণনা করা হচ্ছে।
- সঠিকভাবে মিলে যাওয়া বন্ধনীর n জোড়া সম্বলিত এক্সপ্রেশনের সংখ্যা খুঁজে বের করা। n =3 এর জন্য সম্ভাব্য বন্ধনী অভিব্যক্তিটি হবে ((())), ()(()), ()()(), (())(), (()())।
- বৃত্তের সংযোগ বিচ্ছিন্ন কর্ডগুলিতে বিন্দু সংযোগ করার উপায় এবং আরও অনেকগুলি সন্ধান করা।
উদাহরণ
ইনপুট:n =6 আউটপুট:132 ইনপুট:n =8 আউটপুট:1430
প্রদত্ত সমস্যা সমাধানের জন্য আমরা যে পদ্ধতি ব্যবহার করব −
- গ্রহণ এবং ইনপুট n।
- চেক করুন যদি n <=1 তারপর, রিটার্ন 1
- i=0 থেকে i
লুপ করুন - প্রতিটি i সেট ফলাফল =ফলাফল + (কাতালান(i)*কাতালান(n-i-1))
- ফলাফল প্রিন্ট করুন।
অ্যালগরিদম
Start Step 1 -> ফাংশনে unsigned long int catalan(unsigned int n) যদি n <=1 হয়, তাহলে 1 এন্ড রিটার্ন করুন যদি একটি আনসাইন করা লং ভ্যারিয়েবল ঘোষণা করেন res =0 লুপ ফর i=0 এবং iint main() একটি ইনপুট ঘোষণা করুন n =6 প্রিন্ট করুন "ক্যাটালান হল :তারপর ক্যাটালান (n)স্টপকে কল করুন প্রাক> উদাহরণ
#include// রিকার্সিভ অ্যাপ্রোচ ব্যবহার করে ক্যালিটাল নম্বর আনসাইন করা লং int ক্যালটাল (আনসাইন করা int n) {// বেস কেস যদি (n <=1) রিটার্ন 1; // কাতালান(n) হল ক্যাটালান(i)*কাতালান(n-i-1) স্বাক্ষরবিহীন লং int res =0 এর সমষ্টি; জন্য (int i=0; i আউটপুট
কাতালান হল :132