কম্পিউটার টিউটোরিয়াল

C++-এ নাম্বার লাইনে দৃষ্টিগত সেরা পয়েন্ট গণনা

আমাদের একটি বাইনারি সিকোয়েন্স (০ এবং ১) দেওয়া আছে। একটি ব্যক্তি current_pos পজিশনে থাকে। সিকোয়েন্স থেকে ০ পেলে এক ধাপ বামে (current_pos - 1), ১ পেলে এক ধাপ ডানে (current_pos + 1) যাবে। পুরো সিকোয়েন্স শেষ হলে সে কতগুলো ভিন্ন (distinct) পজিশন ভিজিট করেছে তা বের করতে হবে।

এটি ভিজিট ফ্রিকোয়েন্সি দিয়ে সমাধান করা হয়। যদি ফ্রিকোয়েন্সি নন-জিরো হয় তবে ডিস্টিংক্ট পয়েন্ট কাউন্ট বাড়ানো।

ইনপুট

Path[]= "001100" current_pos=3

আউটপুট

Distinct points visited on number line: 3

ব্যাখ্যা: পজিশন ৩ থেকে শুরু করে পাথ অনুসরণ করলে ভিজিট করা পজিশনগুলো: ২, ১, ২, ৩, ২, ১। ডিস্টিংক্ট পজিশন: ১, ২, ৩ (মোট ৩)।

ইনপুট

Path[]= "010101" current_pos=5

আউটপুট

Distinct points visited on number line: 2

ব্যাখ্যা: পজিশন ৫ থেকে শুরু করে পজিশন ৪ এবং ৫ এর মধ্যে অল্টারনেট করে। ডিস্টিংক্ট পজিশন: ৪, ৫ (মোট ২)।

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

  • ০ এবং ১ স্ট্রিং path-এ স্টোর করা।
  • current_pos-এ শুরুর পজিশন স্টোর করা।
  • getDistinctPoints(int current_pos, string path) ফাংশন পজিশন ও পাথ নিয়ে ডিস্টিংক্ট পয়েন্ট কাউন্ট রিটার্ন করে।
  • frequency[21] অ্যারে দিয়ে প্রতিটি পয়েন্ট কতবার ভিজিট হয়েছে তা স্টোর করা (ইনডেক্স = পয়েন্ট, ০-২০)।
  • পাথ ট্র্যাভার্স করলে ০ হলে current_pos--, ১ হলে current_pos++ এবং frequency[current_pos]++ করা।
  • frequency অ্যারে ট্র্যাভার্স করে নন-জیرো এন্ট্রি গুনে count বের করা।
  • count রিটার্ন করা।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int getDistinctPoints(int current_pos, string path){
    int len = path.length();
    int count = 0;
    int frequency[21] = {0};
    for (int i = 0; i < len; i++) {
        if (path[i] == '0') {
            current_pos--;
            frequency[current_pos]++;
        }
        else {
            current_pos++;
            frequency[current_pos]++;
        }
    }
    for(int i=0; i<21; i++)
        if(frequency[i] != 0)
            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. OpenCV-এ C++ ব্যবহার করে চেহারার সংখ্যা গণনা করা

  2. OpenCV-এ C++ ব্যবহার করে মোট ফ্রেম সংখ্যা গণনা করা

  3. ফিবোনাচ্চি সংখ্যা যেন করা নোডের ওজন এবং X-এর যোগফল C++-এ

  4. C++-এ একটি বিশপ এক মুভে যেসব স্কয়ার ভিজিট করতে পারে সেটির সংখ্যা গণনা