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

C++ ব্যবহার করে কার্টেসিয়ান প্লেনে বিন্দু অপসারণ করে একই অক্ষের একপাশে আনা

সমস্যা বিবরণ

আমাদের একটি কার্টেসিয়ান প্লেনে Nটি বিন্দু দেওয়া আছে। আমাদের কাজ হল ন্যূনতম কতগুলো বিন্দু অপসারণ করলে বাকি বিন্দুগুলো যেকোনো একটি অক্ষের (X অক্ষ বা Y অক্ষ) একপাশে আসে তা বের করা।

যদি ইনপুট হয় {(10, 5), (-2, -5), (13, 8), (-14, 7)} তবে (-2, -5) অপসারণ করলে বাকি সব বিন্দু X-অক্ষের উপরে থাকবে। তাই উত্তর হল 1।

এলগরিদম

1. X-অক্ষ এবং Y-অক্ষের সব পাশের বিন্দু সংখ্যা বের করুন
2. সেগুলোর মধ্যে ন্যূনতমটি রিটার্ন করুন

উদাহরণ কোড

#include <iostream>
#include <algorithm>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;

struct point {
    int x, y;
};

int minPointsToBeRemoved(point arr[], int n) {
    int a = 0, b = 0, c = 0, d = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i].x >= 0)
            b++;
        else if (arr[i].x <= 0)
            a++;
        if (arr[i].y <= 0)
            d++;
        else if (arr[i].y >= 0)
            c++;
    }
    return min({a, d, c, b});
}

int main() {
    point arr[] = {{10, 5}, {-2, -5}, {13, 8}, {-14, 7}};
    cout << "Minimum points to be removed = " << minPointsToBeRemoved(arr, SIZE(arr)) << endl;
    return 0;
}

আউটপুট

প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট পাওয়া যাবে:

Minimum points to be removed = 1
  1. C++ ব্যবহার করে মেডিয়ান x করার জন্য অ্যারেতে যোগ করার ন্যূনতম এলিমেন্ট সংখ্যা

  2. C++ ব্যবহার করে অ্যারে 'ভালো' করার জন্য ন্যূনতম এলিমেন্ট অপসারণ

  3. C++ ব্যবহার করে একটি স্ট্রিংকে অন্য স্ট্রিংয়ে রূপান্তরের ন্যূনতম ডিলিশন ও ইনসারশন

  4. C++ ব্যবহার করে একটি সংখ্যার ফ্যাক্টরের ন্যূনতম যোগফল বের করা