Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी++ में 2डी कैरेक्टर ऐरे में दिए गए स्ट्रिंग की संख्या की गणना

निम्नलिखित समस्या दैनिक समाचार पत्र क्रॉसवर्ड का एक उदाहरण है, यहां हमें 2-आयामी वर्ण सरणी दी गई है और समस्या कथन 2-आयामी वर्ण सरणी भूलभुलैया से दिए गए शब्द का पता लगाना है। खोज एल्गोरिदम में अलग-अलग वर्ण ढूंढना शामिल है ऊपर से नीचे ,दाएं से बाएं और इसके विपरीत लेकिन तिरछे नहीं।

आइए उदाहरणों से समझते हैं

इनपुट- स्ट्रिंग शब्द-लेज़

2डी स्ट्रिंग[ ] - { "LOAPYS", "KAYSOT", "LAYSST", "MLVAYS", "LAYSAA", "LAOYLS"};

आउटपुट- 2डी कैरेक्टर ऐरे में दिए गए स्ट्रिंग्स की संख्या:7

स्पष्टीकरण - जैसा कि हमें शब्दों की स्ट्रिंग सरणी के साथ दिया गया है और उनमें से, हमें "LAYS" शब्द ढूंढना है, जिसे टॉप-बॉटम, राइट-लेफ्ट, बॉटम-टॉप और लेफ्ट-राइट जैसे किसी भी दिशा में खोजा जा सकता है। हर बार दी गई खोज स्ट्रिंग मिलने पर कोड में काउंटर फ्लैग जुड़ जाता है, और परिणाम के लिए अंत में गिनती वापस कर दी जाती है। उदाहरण में, हम देख सकते हैं कि LAYS 7 बार बनता है अर्थात

1->एलवाईएस -LAYS-> बाएं से दाएं

2 ->एसवाईएएल -ले (दाएं से बाएं)

3->लेज टी-ले (बाएं से दाएं)

4->एमएल वीAYS- लेज़ (बाएं से दाएं)

5->लेसा ए-लेज़ (बाएं से दाएं)

6->लाYLS -ले (बाएं से दाएं)

7->(नीचे से ऊपर) लाल परतों में

इनपुट- स्ट्रिंग शब्द- कैंप

2डी स्ट्रिंग[ ] - { "BLOOKS", "BPOOLK", "KOHPKB", "BOLKOK", "LKIOOB", "LAHYBL"}

आउटपुट- 2डी कैरेक्टर ऐरे में दिए गए स्ट्रिंग की संख्या की संख्या:0

स्पष्टीकरण-: जैसा कि हमें शब्दों की स्ट्रिंग सरणी के साथ दिया गया है और उनमें से, हमें "LAYS" शब्द ढूंढना है, जिसे टॉप-बॉटम, राइट-लेफ्ट, बॉटम-टॉप और लेफ्ट-राइट जैसे किसी भी दिशा में खोजा जा सकता है। हर बार दी गई खोज स्ट्रिंग मिलने पर कोड में काउंटर फ्लैग जुड़ जाता है, और परिणाम के लिए अंत में गिनती वापस कर दी जाती है। उदाहरण में, हम देख सकते हैं कि BOOK बनता है 0 बार।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हमें एक स्ट्रिंग (शब्द) और स्ट्रिंग सरणी के साथ दिया गया है जो कुछ उपयोगिता चर के साथ आगे की प्रक्रिया के लिए फाइंडस्ट्रिंग () में पारित किया जाता है।
  • मैट्रिक्स में वर्णों का पता लगाया जाता है और स्ट्रिंग शुरू करने के लिए एक वर्ण उठाया जाता है।
  • उस चरित्र के लिए जिसे चुना गया है, हम दिए गए स्ट्रिंग के लिए एल्गोरिथम के अनुसार सभी संभव दिशाओं में पुनरावर्ती रूप से पाते हैं
  • यदि कोई मिलान पाया जाता है तो काउंटर बढ़ा दिया जाता है
  • पहले प्रारंभिक चरित्र के साथ किए जाने के बाद, प्रक्रिया फिर अगले चरित्र के लिए दोहराई जाती है
  • गिनती के योग की गणना संबंधित मैचों के साथ की जाती है
  • तब अंतिम उत्तर कैप्चर किया जाता है, और परिणाम मुद्रित किया जाता है।

उदाहरण

#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++ में हेक्साडेसिमल संख्या गिनें

    हमें प्रारंभ और अंत वाली एक श्रेणी दी गई है और कार्य दिए गए श्रेणी में मौजूद हेक्साडेसिमल संख्याओं या वर्णों की गणना करना है। हेक्साडेसिमल अक्षर क्या हैं? कंप्यूटर के संदर्भ में, हेक्साडेसिमल संख्याएँ वे संख्याएँ होती हैं जिनका आधार 16 होता है, जिसका अर्थ है कि द्विआधारी अंक को 16-बिट में दर्शाया ज

  1. सी ++ में स्ट्रिंग एट () फ़ंक्शन

    इस खंड में, हम देखेंगे कि C++ में at a () फंक्शन क्या है। किसी दिए गए स्थान पर वर्ण तक पहुँचने के लिए at() फ़ंक्शन का उपयोग किया जाता है। इस कार्यक्रम में, हम a () फ़ंक्शन का उपयोग करके प्रत्येक वर्ण के माध्यम से पुनरावृति करेंगे और उन्हें अलग-अलग पंक्तियों में प्रिंट करेंगे। उदाहरण कोड #include<

  1. C++ में स्ट्रिंग्स का ऐरे

    स्ट्रिंग कीवर्ड का उपयोग करके C++ में स्ट्रिंग्स की सरणी बनाई जा सकती है। यहां हम इस दृष्टिकोण का उपयोग करके C++ प्रोग्राम पर चर्चा कर रहे हैं। एल्गोरिदम Begin Initialize the elements of array by string keyword. And take string as input. Print the array. End. उदाहरण कोड #include<iostream>