কম্পিউটার টিউটোরিয়াল

সন্নিহিত অক্ষরের পার্থক্য ১ হলে স্ট্রিং গণনা (C++ প্রোগ্রাম)

আমাদের একটি 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 ফেরত দিন।
C++ প্রোগ্রাম উদাহরণ
#include 
using 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
  1. C++-এ স্ট্রিংয়ে প্রাইম ASCII মানবाले অক্ষর গণনা

  2. সি++-এ দুটি স্ট্রিং-এ সাধারণ ক্যারেক্টার গণনা

  3. C++-এ দুটি স্ট্রিংয়ের কমন ক্যারেক্টর অ্যালফাবেটিক্যালি প্রিন্ট করুন

  4. C++-এ এক লাইনে একাধিক স্ট্রিং ক্যাটেনেট করা