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

C++-এ দिये गये সেগমেন্ট দৈর্ঘ্য থেকে মধ্যবর্তী পয়েন্ট সেগমেন্ট খুঁজুন

এই সমস্যায়, আমাদের একটি অ্যারে arr[] দেওয়া আছে যাতে m সংখ্যক লাইন সেগমেন্টের দৈর্ঘ্য থাকে।

লাইন সেগমেন্টগুলো হলো 0 থেকে arr[0], arr[0] থেকে arr[1] এবং এভাবে চালিয়ে। আমাদের কাজ হলো সকল সেগমেন্টের মধ্যবর্তী সেগমেন্ট খুঁজে বের করা।

উদাহরণ

ইনপুট

arr[] = {5, 7, 13}

আউটপুট

3

ব্যাখ্যা

সেগমেন্টগুলো: (0, 5), (5, 12), (12, 25)

সমাধানের পদ্ধতি

সমস্যাটি সমাধান করতে, আমরা লাইনের মধ্যবর্তী বিন্দু বের করব (arrSum/2) দিয়ে। যদি এই মধ্যবর্তী বিন্দু কোনো লাইন সেগমেন্টের শুরু বা শেষ বিন্দু হয়, তবে -1 প্রিন্ট করব। অন্যথায়, সেগমেন্ট নম্বর প্রিন্ট করব।

C++ প্রোগ্রাম উদাহরণ

#include <iostream>
using namespace std;

int findSegmentWithMidPoint(int n, int m, int segment_length[]) {
    double centerPoint = (1.0 * n) / 2.0;
    int sum = 0;
    int segment = 0;
    for (int i = 0; i < m; i++) {
        sum += segment_length[i];
        if ((double)sum == centerPoint) {
            segment = -1;
            break;
        }
        if (sum > centerPoint) {
            segment = i + 1;
            break;
        }
    }
    return segment;
}

int main() {
    int m = 3;
    int segment_length[] = { 5, 7, 13 };
    int arrSum = segment_length[0];
    for(int i = 0; i < m; i++)
        arrSum += segment_length[i];
    int ans = findSegmentWithMidPoint(arrSum, m, segment_length);
    cout << "The segment number where middle point lies is " << ans;
    return 0;
}

আউটপুট

The segment number where middle point lies is 3
  1. C++-এ দেয়া সেটের প্রতিটি নোড থেকে পৌঁছানো যাওয়া সব নোড খুঁজে বের করা

  2. C++-এ দেওয়া শুরুর ক্যারেক্টার থেকে সর্বোচ্চ পথের দৈর্ঘ্য নির্ণয়

  3. C++ প্রোগ্রাম: দোয়া পয়েন্ট কভার করে সেরা ফিট রেক্ট্যাঙ্গল খুঁজে বের করা

  4. সি++-এ ডিপেন্ডেন্সি থেকে টাস্কের অর্ডারিং বের করুন (টপোলজিক্যাল সোর্ট)