কম্পিউটার

C++ এ 2D অক্ষর অ্যারেতে প্রদত্ত স্ট্রিংয়ের সংখ্যা


নিম্নলিখিত সমস্যাটি দৈনিক সংবাদপত্রের ক্রসওয়ার্ডের একটি উদাহরণ, এখানে আমাদের একটি 2-মাত্রিক অক্ষর অ্যারে দেওয়া হয়েছে এবং সমস্যা বিবৃতিটি হল 2-মাত্রিক অক্ষর অ্যারে গোলকধাঁধা থেকে প্রদত্ত শব্দটি খুঁজে বের করা। অনুসন্ধান অ্যালগরিদম থেকে পৃথক অক্ষরগুলি খুঁজে পাওয়া অন্তর্ভুক্ত টপ-টু-বটম ,ডান-থেকে-বামে এবং তদ্বিপরীত কিন্তু তির্যক নয়।

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

ইনপুট- স্ট্রিং শব্দ-LAYS

2D স্ট্রিং[ ] - { "LOAPYS", "KAYSOT", "LAYSST", "MLVAYS", "LAYSAA", "LAOYLS" };

আউটপুট- 2D অক্ষর অ্যারেতে প্রদত্ত স্ট্রিংগুলির সংখ্যা:7

ব্যাখ্যা - যেমন আমাদেরকে শব্দের স্ট্রিং অ্যারে দেওয়া হয়েছে এবং সেগুলি থেকে, আমাদের "LAYS" শব্দটি খুঁজে বের করতে হবে যা যে কোনো দিকে যেমন টপ-বটম, রাইট-লেফট, বটম-টপ এবং লেফট-রাইট সার্চ করা যায়। প্রদত্ত অনুসন্ধান স্ট্রিং পাওয়া গেলে প্রতিবার কোডে কাউন্টার ফ্ল্যাগ যুক্ত হয় এবং ফলাফলের জন্য গণনা শেষে ফেরত দেওয়া হয়। উদাহরণে, আমরা দেখতে পাচ্ছি LAYS 7 বার গঠিত হয়েছে অর্থাৎ

1->L OA PYS -LAYS-> বাম থেকে ডানে

2 ->S৷ AYA OL -লেস(ডান থেকে বামে)

3->লেস টি-লেস(বাম থেকে ডানে)

4->ML VAYS- LAYS(বাম থেকে ডানে)

5->লেসা A-LAYS(বাম থেকে ডানে)

6->LA OYLS -লেস(বাম থেকে ডানে)

7->(নীচ থেকে উপরে) লাল স্তরে

ইনপুট- স্ট্রিং শব্দ- CAMP

2D স্ট্রিং[ ] - { "BLOOKS", "BPOOLK", "KOHPKB", "BOLKOK", "LKIOOB", "LAHYBL" }

আউটপুট- 2D অক্ষর অ্যারেতে প্রদত্ত স্ট্রিংয়ের সংখ্যা:0

ব্যাখ্যা-: যেমন আমাদেরকে শব্দের স্ট্রিং অ্যারে দেওয়া হয়েছে এবং সেগুলি থেকে, আমাদের "LAYS" শব্দটি খুঁজে বের করতে হবে যা যে কোনো দিকে যেমন টপ-বটম, রাইট-লেফট, বটম-টপ এবং লেফট-রাইট সার্চ করা যায়। প্রদত্ত অনুসন্ধান স্ট্রিং পাওয়া গেলে প্রতিবার কোডে কাউন্টার ফ্ল্যাগ যুক্ত হয় এবং ফলাফলের জন্য গণনা শেষে ফেরত দেওয়া হয়। উদাহরণে, আমরা দেখতে পারি BOOK গঠিত হয়েছে 0 বার

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • আমাদের একটি স্ট্রিং(শব্দ) এবং স্ট্রিং অ্যারে দেওয়া হয়েছে যা কিছু ইউটিলিটি ভেরিয়েবল সহ আরও প্রক্রিয়াকরণের জন্য findString() এ পাস করা হয়৷
  • ম্যাট্রিক্সের অক্ষরগুলিকে তারপর ট্র্যাভার্স করা হয় এবং স্ট্রিং শুরু করার জন্য একটি অক্ষর বাছাই করা হয়৷
  • যে অক্ষরটি বাছাই করা হয়েছে তার জন্য আমরা অ্যালগরিদম অনুসারে সম্ভাব্য সমস্ত দিক থেকে প্রদত্ত স্ট্রিংটির জন্য পুনরাবৃত্তিমূলকভাবে খুঁজে পাই
  • যদি একটি মিল পাওয়া যায় তাহলে কাউন্টারটি বৃদ্ধি করা হয়
  • প্রথম স্টার্ট অক্ষর দিয়ে শেষ করার পর, পরবর্তী অক্ষরের জন্য প্রক্রিয়াটি পুনরাবৃত্তি করা হয়
  • গণনার সমষ্টি তারপর সংশ্লিষ্ট মিলগুলির সাথে গণনা করা হয়
  • অন্তত চূড়ান্ত উত্তর ক্যাপচার করা হয়, এবং ফলাফল মুদ্রিত হয়।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int utilitySearch(string word, int r, int c, string arr[], int maxR, int maxC, int index) {
   int count = 0;
   if (r >= 0 && r <= maxR && c >= 0) {
      if (c <= maxC && word[index] == arr[r][c]) {
         char res = word[index];
         index = index + 1;
         arr[r][c] = 0;
         if (word[index] == 0) {
            count = 1;
         } else {
            count = count + utilitySearch(word, r, c + 1, arr, maxR, maxC, index);
            count = count + utilitySearch(word, r, c - 1, arr, maxR, maxC, index);
            count = count + utilitySearch(word, r + 1, c, arr, maxR, maxC, index);
            count = count + utilitySearch(word, r - 1, c, arr, maxR, maxC, index);
         }
         arr[r][c] = res;
      }
   }
   return count;
}

int findString(string word, int r, int c, string str[], int countR, int countC) {
   int count = 0;
   for (int i = 0; i < countR; ++i) {
      for (int j = 0; j < countC; ++j) {
         count = count + utilitySearch(word, i, j, str, countR - 1, countC - 1, 0);
      }
   }
   return count;
}

int main() {
      string word = "FLOOD";
      string inp[] = {"FPLIOKOD","FLOODYUT","YFLOODPU","FMLOSODT","FILPOYOD", FLOOOODE " };
         string str[(sizeof(inp) / sizeof( * inp))];
         for (int i = 0; i < (sizeof(inp) / sizeof( * inp)); ++i) {
            str[i] = inp[i];
         }
         cout << "Count of number of given string in 2D character array: " << findString(word, 0, 0, str, (sizeof(inp) / sizeof( * inp)), str[0].size());
         return 0;
}

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে

আউটপুট

Count of number of given string in 2D character array: 6

  1. C++ অ্যারেতে দুটি প্রদত্ত উপাদানের মধ্যে উপাদানের সংখ্যা গণনা করুন

  2. C++ এ হেক্সাডেসিমেল সংখ্যা গণনা করুন

  3. C++ এ স্ট্রিং এ() ফাংশন

  4. C++ এ স্ট্রিং এর অ্যারে