কম্পিউটার

গাছের নোডগুলি গণনা করুন যার ওজনযুক্ত স্ট্রিংটিতে C++ এ একটি স্বর রয়েছে


স্ট্রিং হিসাবে এর নোডগুলির ওজন সহ একটি বাইনারি গাছ দেওয়া হয়েছে। লক্ষ্য হল নোডের সংখ্যা খুঁজে বের করা যার ওজন আছে যাতে স্ট্রিংটিতে একটি স্বর থাকে। ওজন যদি 'aer' হয় তাহলে এর স্বর আছে 'a' এবং 'e' তাই নোডটি গণনা করা হবে।

উদাহরণস্বরূপ

ইনপুট

মান ইনপুট করার পরে যে গাছটি তৈরি হবে তা নীচে দেওয়া হল -

গাছের নোডগুলি গণনা করুন যার ওজনযুক্ত স্ট্রিংটিতে C++ এ একটি স্বর রয়েছে

আউটপুট

Count the nodes of the tree whose weighted string contains a vowel are: 5

ব্যাখ্যা

আমাদের ট্রি নোড এবং প্রতিটি নোডের সাথে যুক্ত স্ট্রিং ওজন দেওয়া হয়। এখন আমরা পরীক্ষা করি যে নোডের স্ট্রিং-এ স্বরবর্ণ আছে কি না।

নোড ওজন স্বরধ্বনি হ্যাঁ/না
2 ae e হ্যাঁ
1 bcd কোন স্বরবর্ণ নেই না
4 io i,o হ্যাঁ
3 gfe e হ্যাঁ
8 tptpa a হ্যাঁ
9 you i,o,u হ্যাঁ

ইনপুট

মান ইনপুট করার পরে যে গাছটি তৈরি হবে তা নীচে দেওয়া হল -

গাছের নোডগুলি গণনা করুন যার ওজনযুক্ত স্ট্রিংটিতে C++ এ একটি স্বর রয়েছে

আউটপুট

Count the nodes of the tree whose weighted string contains a vowel are: 3

ব্যাখ্যা

with the tree nodes and the string weights associated with each node. Now we check whether the string of nodes contains vowels or not.
নোড ওজন স্বরধ্বনি হ্যাঁ/না
2 oaei o,a,e,i হ্যাঁ
1 abcd কোন স্বরবর্ণ নেই না
4 iio i,o হ্যাঁ
3 ggff কোন স্বরবর্ণ নেই না
8 aaa a হ্যাঁ

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

এই পদ্ধতিতে আমরা গাছের গ্রাফে ডিএফএস প্রয়োগ করব যাতে এটি অতিক্রম করা যায় এবং নোডের ওজনে একটি স্বরযুক্ত স্ট্রিং আছে কিনা তা পরীক্ষা করে দেখব। এই উদ্দেশ্যে দুটি ভেক্টর Node_Weight(100) এবং edge_graph[100] নিন।

  • নোডের ওজন দিয়ে নোড_ওয়েট[] শুরু করুন।

  • ভেক্টর এজ_গ্রাফ ব্যবহার করে একটি গাছ তৈরি করুন।

  • একটি বৈশ্বিক পরিবর্তনশীল স্বর নিন এবং এটি 0 দিয়ে শুরু করুন।

  • ফাংশন চেক(স্ট্রিং check_it) s স্ট্রিং নেয় এবং check_it-এ একটি স্বর থাকলে তা সত্য ফেরত দেয়।

  • দৈর্ঘ্য =check_it.length() কে check_it-এ অক্ষরের সংখ্যা হিসাবে নিন।

  • সূচক i=0 থেকে i এর জন্য লুপ ব্যবহার করে চেক_ইট ট্রাভার্স করুন

  • প্রতিটি check_it[i] নিন ছোট হাতের অক্ষরে রূপান্তরিত এবং c-এ সংরক্ষিত।

  • যদি c স্বরবর্ণের (‘a’, ‘e’ ‘i’, ‘o’, ‘u’) উভয়ের সমান হয়, তাহলে সত্য ফেরত না হলে মিথ্যা ফেরত দিন।

  • ফাংশন string_vowel(int node, int root) একটি গাছের একটি নোড এবং রুট নোড নেয় এবং প্রদত্ত গাছে নোডের সংখ্যা ফেরত দেয় যার ওজন অক্ষর হিসাবে একটি স্বর ধারণ করে৷

  • str =Node_Weight[নোড] নিন।

  • যদি চেক(str) true রিটার্ন করে তাহলে vowel বাড়ান।

  • লুপের জন্য ব্যবহার করে ভেক্টর এজ_গ্রাফ[নোড] এ ট্র্যাভার্স ট্রি।

  • ভেক্টরের পরবর্তী নোডের জন্য string_vowel(it, node) কে কল করুন।

  • সমস্ত ফাংশনের শেষে আমাদের কাছে একটি স্বরবর্ণ থাকবে যেমন নোডের সংখ্যা যার মধ্যে স্বর থাকবে।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
vector<string> Node_Weight(100);
vector<int> edge_graph[100];
int vowel = 0;
bool check(string check_it){
   int length = check_it.length();
   for(int i = 0; i <length; i++){
      char c = tolower(check_it[i]);
      if(c == 'a' ||c == 'e' ||c == 'i' ||c == 'o' ||c == 'u'){
         return true;
      }
   }
   return false;
}
void string_vowel(int node, int root){
   string str = Node_Weight[node];
   if(check(str)){
      vowel++;
   }
   for (int it : edge_graph[node]){
      if(it == root){
         continue;
      }
      string_vowel(it, node);
   }
}
int main(){
   //weight of the nodes
   Node_Weight[2] = "ae";
   Node_Weight[1] = "bcd";
   Node_Weight[4] = "io";
   Node_Weight[3] = "gfe";
   Node_Weight[8] = "tptpa";
   Node_Weight[9] = "iou";
   //create graph edge
   edge_graph[2].push_back(1);
   edge_graph[2].push_back(4);
   edge_graph[4].push_back(3);
   edge_graph[4].push_back(8);
   edge_graph[8].push_back(9);
   string_vowel(2, 2);
   cout<<"Count the nodes of the tree whose weighted string contains a vowel are: "<<vowel;
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count the nodes of the tree whose weighted string contains a vowel are: 5

  1. C++ এ স্ট্রিং হিসাবে উপস্থাপিত একটি গাছে k-তম স্তরে নোডের পণ্য

  2. C++ এ একটি বাইনারি ট্রিতে নন-লিফ নোড গণনা করুন

  3. C++ এ সম্পূর্ণ ট্রি নোড গণনা করুন

  4. C++ প্রোগ্রামিং-এ একটি গাছের বিজোড় স্তরে নোডগুলি প্রিন্ট করুন।