আমাদের একটি num সংখ্যা ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হল num দৈর্ঘ্যের সম্ভাব্য স্ট্রিংগুলোর সংখ্যা গণনা করা যেন সকল সন্নিহিত অক্ষরের ASCII মান পার্থক্য ১ হয়।
যদি num = 2 হয়, তবে স্ট্রিংগুলো হবে "ab", "ba", "bc", "cb", ...... "yz", "zy"।
ইনপুট: num = 3
আউটপুট: সন্নিহিত অক্ষরের পার্থক্য ১ হলে স্ট্রিং গণনা: 98
ব্যাখ্যা: কিছু নমুনা স্ট্রিং: "abc", "aba", "cde" ...... "xyx", "zyz", "xyz"।
ইনপুট: num = 2
আউটপুট: সন্নিহিত অক্ষরের পার্থক্য ১ হলে স্ট্রিং গণনা: 50
ব্যাখ্যা: কিছু নমুনা স্ট্রিং: "ab", "ba", "cd" ...... "xy", "zy", "yz"।
দৈর্ঘ্য = ২ এর জন্য।
- 'a' দিয়ে শুরু হওয়া স্ট্রিং = "ab"
- 'b' দিয়ে শুরু হওয়া স্ট্রিং = "ba", "bc"
- 'c' দিয়ে শুরু হওয়া স্ট্রিং = "cd", "cb" ............
দৈর্ঘ্য = n এর জন্য।
- 'a' দিয়ে শুরু হওয়া স্ট্রিং = দৈর্ঘ্য n-1 এবং 'b' দিয়ে শুরু হওয়া স্ট্রিংয়ের সংখ্যা
- 'b' দিয়ে শুরু হওয়া স্ট্রিং = দৈর্ঘ্য n-1 এবং 'a' বা 'c' দিয়ে শুরু হওয়া স্ট্রিংয়ের সংখ্যা
- 'c' দিয়ে শুরু হওয়া স্ট্রিং = দৈর্ঘ্য n-1 এবং 'b' বা 'd' দিয়ে শুরু হওয়া স্ট্রিংয়ের সংখ্যা
আমরা এটি ডাইনামিক প্রোগ্রামিং দিয়ে সমাধান করব।
arr[num+1][27] নামে একটি অ্যারে নিন। যেখানে arr[i][j]-এ দৈর্ঘ্য i এবং অক্ষর নম্বর j দিয়ে শুরু হওয়া স্ট্রিংয়ের সংখ্যা থাকবে। সকল arr[1][j] হবে ১ "a", "b"..."z" স্ট্রিংয়ের জন্য।
বাকি arr[2 to num+1][0 to 25]-এর জন্য, j=0 হলে arr[i][j] = arr[i-1][j+1] সেট করুন। অন্যথায় arr[i][j] = arr[i-1][j-1] + arr[i-1][j+1] সেট করুন।
ফলাফল হবে num-তম সারির গণনার যোগফল।
- ইনপুট পূর্ণসংখ্যা num নিন।
- difference_strings(int num) ফাংশন num নেয় এবং সন্নিহিত অক্ষরের পার্থক্য ১ হলে স্ট্রিং গণনা ফেরত দেয়।
- আরম্ভিক গণনা ০ নিন।
- arr[num + 1][27] অ্যারেটি ০ দিয়ে আরম্ভিক করুন।
- arr[1][0 to 25]-কে সব ১ দিয়ে আরম্ভিক করুন।
- দুটি for লুপ দিয়ে ২D অ্যারে arr[][] ট্রভার্স করুন ২য় সারি থেকে শেষ সারি এবং কলাম ০ থেকে ২৫ পর্যন্ত সব ২৬ অক্ষরের জন্য।
- j=0 এর জন্য, শুরুর অক্ষর 'a'। বর্তমান গণনা arr[i][j] = arr[i - 1][j + 1] সেট করুন।
- অন্যথায় arr[i][j] = (arr[i - 1][j - 1] + arr[i - 1][j + 1]) সেট করুন।
- উপরের লুপগুলো শেষ হলে, শেষ সারি ট্রভার্স করুন এবং arr[num][0 to 25]-কে count-এ যোগ করুন।
- ফলাফল হিসেবে count ফেরত দিন।
#includeusing namespace std; int difference_strings(int num) { long int count = 0; long int arr[num + 1][27]; memset(arr, 0, sizeof(arr)); for (int i = 0; i <= 25; i++) { arr[1][i] = 1; } for (int i = 2; i <= num; i++) { for (int j = 0; j <= 25; j++) { if (j == 0) { arr[i][j] = arr[i - 1][j + 1]; } else { arr[i][j] = (arr[i - 1][j - 1] + arr[i - 1][j + 1]); } } } for (int i = 0; i <= 25; i++) { count = (count + arr[num][i]); } return count; } int main() { int num = 2; cout << "Count of strings where adjacent characters are of difference one are: " << difference_strings(num); return 0; }
Count of strings where adjacent characters are of difference one are: 50