কম্পিউটার

স্ট্রিংয়ের সংখ্যা যেখানে সংলগ্ন অক্ষরগুলি C++-এ একের মধ্যে পার্থক্য রয়েছে


ইনপুট হিসাবে আমাদের একটি সংখ্যা দেওয়া হয়। লক্ষ্য হল দৈর্ঘ্য সংখ্যার সম্ভাব্য স্ট্রিংগুলির সংখ্যা গণনা করা যাতে সমস্ত সংলগ্ন অক্ষরগুলির ascii মানের মধ্যে 1 হিসাবে পার্থক্য থাকে৷

যদি সংখ্যা 2 হয় তাহলে স্ট্রিংগুলি হবে "ab", "ba", "bc", "cb", ……..”yz", "zy"৷

আসুন উদাহরণ দিয়ে বুঝতে পারি

ইনপুট − সংখ্যা=3

আউটপুট − স্ট্রিংগুলির সংখ্যা যেখানে সন্নিহিত অক্ষরগুলির মধ্যে পার্থক্য রয়েছে একটি হল −98

ব্যাখ্যা − কিছু নমুনা স্ট্রিং হল:“abc”, “aba”, “cde”…..”xyx”, “zyz”, “xyz”।

ইনপুট − সংখ্যা=2

আউটপুট − স্ট্রিংগুলির সংখ্যা যেখানে সন্নিহিত অক্ষরগুলির মধ্যে পার্থক্য রয়েছে একটি হল −50

ব্যাখ্যা − কিছু নমুনা স্ট্রিং হল:“ab”, “ba”, “cd”…..”xy”, “zy”, “yz”।

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

দৈর্ঘ্যের জন্য =2.

a=“ab”

দিয়ে শুরু হওয়া স্ট্রিং

b=“ba”, “bc”

দিয়ে শুরু হওয়া স্ট্রিং

c=“cd”, “cb”...............

দিয়ে শুরু হওয়া স্ট্রিং

দৈর্ঘ্যের জন্য =n.

স্ট্রিং শুরু হচ্ছে a=পথের দৈর্ঘ্য n-1 দিয়ে শুরু হচ্ছে b

স্ট্রিং শুরু হয় b=পথের দৈর্ঘ্যের স্ট্রিং সংখ্যার n-1 a বা c দিয়ে শুরু হয়

c দিয়ে শুরু হওয়া স্ট্রিং =দৈর্ঘ্য n-1 এর স্ট্রিং সংখ্যার উপায় b বা d দিয়ে শুরু হয়

আমরা ডায়নামিক প্রোগ্রামিং ব্যবহার করে এটি সমাধান করব।

একটি অ্যারে অ্যারে নিন[num+1][27]। arr[i][j]-এর বর্ণমালা সংখ্যা j দিয়ে শুরু করে i দৈর্ঘ্যের বেশ কয়েকটি স্ট্রিং রয়েছে। সমস্ত arr[1][j] হবে 1 স্ট্রিং “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];

ফলাফল হবে সংখ্যা-ম সারির সংখ্যার যোগফল।

  • ইনপুট পূর্ণসংখ্যা নিন

  • ফাংশন ডিফারেন্স_স্ট্রিংস(int num) num নেয় এবং স্ট্রিং এর সংখ্যা ফেরত দেয় যেখানে সন্নিহিত অক্ষরগুলির মধ্যে একটি পার্থক্য রয়েছে

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • সমস্ত 0s সহ arr[num + 1][27] শুরু করুন।

  • সমস্ত 1 এর সাথে arr[1][0 থেকে 25] শুরু করুন।

  • ট্রাভার্স 2D অ্যারে অ্যারে[][][] সারি 2য় থেকে শেষ পর্যন্ত লুপের জন্য দুটি এবং সমস্ত 26টি বর্ণমালার জন্য 0 থেকে 25 কলাম ব্যবহার করে৷

  • 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 থেকে 25] যোগ করুন।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

#include <bits/stdc++.h>
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. একটি স্ট্রিং-এ অক্ষর গণনা করুন যার ASCII মান C++ এ প্রাইম

  2. C++ এ দুটি স্ট্রিং-এ সাধারণ অক্ষর গণনা করুন

  3. C++ এ বর্ণানুক্রমিক ক্রমে দুটি স্ট্রিং-এর সাধারণ অক্ষর প্রিন্ট করুন

  4. কিভাবে এক লাইনে একাধিক C++ স্ট্রিং সংযুক্ত করবেন?