কম্পিউটার

C++ এ সংখ্যা রেখায় দেখা স্বতন্ত্র বিন্দু গণনা করুন


আমাদের 0 এবং 1 এর একটি বাইনারি ক্রম দেওয়া হয়েছে। এছাড়াও অনুমান করুন একজন ব্যক্তি বর্তমান_পোজে সঞ্চিত একটি অবস্থান বা পয়েন্টে বসে আছেন। এখন বর্তমান_পোস থেকে শুরু করে, যদি বাইনারি সিকোয়েন্সে 0 থাকে তবে এক ধাপ বামে হেমোভ করে ( current_pos - 1)। যদি এটি 1 হয় তবে সে এক ধাপ ডানদিকে সরে যায় (বর্তমান_পোস + 1)। লক্ষ্য হল সম্পূর্ণ বাইনারি সিকোয়েন্স সম্পূর্ণ হওয়ার পরে তিনি যে স্বতন্ত্র অবস্থান বা পয়েন্টগুলি পরিদর্শন করেছেন তা খুঁজে বের করা৷

একটি পয়েন্ট যতবার পরিদর্শন করা হয়েছে তা ব্যবহার করে আমরা এটি সমাধান করব। ফ্রিকোয়েন্সি অ-শূন্য হলে, স্বতন্ত্র বিন্দুর সংখ্যা বাড়ান।

ইনপুট

Path[]= “001100” current_pos=3

আউটপুট

Distinct points visited on number line: 3

ব্যাখ্যা - পথ[0] এবং অবস্থান 3 থেকে শুরু করে।

Path[0]: 0 → move left ...currpos=2
Path[1]: 0 → move left ...currpos=1
Path[2]: 1 → move right ...currpos=2
Path[3]: 1 → move left ...currpos=3
Path[4]: 0 → move left ...currpos=2
Path[5]: 0 → move left ...currpos=1

মোট স্বতন্ত্র অবস্থান হল 3, যা হল 1,2,3

ইনপুট

Path[]= “010101” current_pos=5

আউটপুট

Distinct points visited on number line: 2

ব্যাখ্যা − পাথ[0] এবং অবস্থান 5 থেকে শুরু।

Path[0]: 0 → move left ...currpos=4
Path[1]: 1 → move right ...currpos=5
Path[2]: 0 → move left ...currpos=4
Path[3]: 1 → move right ...currpos=5
Path[4]: 0 → move left ...currpos=4
Path[5]: 1 → move right ...currpos=5

মোট স্বতন্ত্র অবস্থান হল 2, যা হল 4 এবং 5

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

  • 0 এবং 1 এর স্ট্রিং পাথে সংরক্ষিত আছে।

  • Current_pos স্টোর স্টার্টিং পয়েন্ট।

  • ফাংশন getDistinctPoints(int current_pos, string path) বর্তমান অবস্থান এবং pathas ইনপুট নেয় এবং স্বতন্ত্র অবস্থান/পয়েন্টের গণনা প্রদান করে।

  • পরিবর্তনশীল লেন্স পথের দৈর্ঘ্য সংরক্ষণ করে।

  • অ্যারে ফ্রিকোয়েন্সি[21] বিন্দুটি কতবার দেখা হয়েছে তার জন্য ফ্রিকোয়েন্সি সংরক্ষণ করতে ব্যবহৃত হয়। সূচক বিন্দু প্রতিনিধিত্ব করে. মোট 0-20।

  • পাথ স্ট্রিং অতিক্রম করা শুরু করুন৷

  • যদি বর্তমান মান 0 হয়, বামে সরান ( current_pos -1 )। এই পয়েন্ট ফ্রিকোয়েন্সির আপডেট ফ্রিকোয়েন্সি[current_pos]++।

  • অন্যথায় বর্তমান মান 1, ডানদিকে সরান ( বর্তমান_পোস +1 )। এই পয়েন্ট ফ্রিকোয়েন্সির আপডেট ফ্রিকোয়েন্সি[current_pos]++।

  • এখন ফ্রিকোয়েন্সি অ্যারে এবং প্রতিটি অ শূন্য মানের জন্য অতিক্রম করুন। সংখ্যা বাড়ান।

  • গণনায় স্বতন্ত্র পরিদর্শিত পয়েন্ট রয়েছে।

  • প্রত্যাশিত ফলাফল হিসাবে গণনা করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
//distict points visited between 0 to 20
int getDistinctPoints(int current_pos, string path){
   // Length of path
   int len = path.length();
   int count=0;
   // Array to store number of times a point is visited
   int frequency[21]={0};
   // For all the directions in path
   for (int i = 0; i < len; i++) {
      //for left direction
      if (path[i] == '0') {
         current_pos--;
         frequency[current_pos]++; //increase visit count
      }
      // If the direction is right
      else {
         current_pos++;
         frequency[current_pos]++; //increase visit count
      }
   }
   for(int i=0;i<21;i++)
      if(frequency[i]!=0) // if visted then frequency[i] is non zero
         count++;
   return count;
}
int main(){
   int current_pos = 3;
   string path = "011101100";
   cout << "Count of distinct points visited on the number line:<<(getDistinctPoints(current_pos, path));
   return 0;
}

আউটপুট

Count of distinct points visited on the number line :5

  1. কিভাবে C++ ব্যবহার করে OpenCV-তে মুখের সংখ্যা গণনা করবেন?

  2. কিভাবে C++ ব্যবহার করে ওপেনসিভিতে ফ্রেমের মোট সংখ্যা গণনা করবেন?

  3. নোডগুলি গণনা করুন যার সমষ্টি X এর সাথে C++ এ একটি ফিবোনাচি সংখ্যা

  4. C++ তে বিশপ যে সমস্ত বর্গক্ষেত্র পরিদর্শন করতে পারে তার মোট সংখ্যা গণনা করুন