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

C++ ব্যবহার করে ম্যানহ্যাটন দূরত্বের যোগফল ন্যূনতম হয় এমন পয়েন্ট বের করা

ধরি K ডাইমেনশনাল স্পেসে nটি ভিন্ন পয়েন্ট আছে, n-এর মান (2, 10⁵) রেঞ্জে, এবং k-এর মান 1 থেকে 5। আমাদের সেটি পয়েন্ট বের করতে হবে যেন সেটি থেকে nটি পয়েন্ট পর্যন্ত ম্যানহ্যাটন দূরত্বের যোগফল ন্যূনতম হয়।

দুটি পয়েন্ট P1(x1, y1) এবং P2(x2, y2)-এর ম্যানহ্যাটন দূরত্ব হল |x1 - x2| + |y1 - y2|। ধরি ডাইমেনশন ৩, এবং তিনটি পয়েন্ট (1,1,1), (2,2,2), (3,3,3), তবে আউটপুট হবে (2,2,2)।

এটি সমাধান করতে সব K ডাইমেনশনে পয়েন্টগুলো সর্ট করে প্রতিটি ডাইমেনশনের মিডিয়ান (middle element) নিলেই হবে।

উদাহরণ কোড

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

void minimizeHanhattan(int n, int k, vector<vector<int> >& pointList) {
    for (int i = 0; i < k; ++i) // সব k ডাইমেনশনে সর্ট
        sort(pointList[i].begin(), pointList[i].end());
    for (int i = 0; i < k; ++i)
        cout << pointList[i][(ceil((double)n / 2) - 1)] << " ";
}

int main() {
    int n = 4, k = 4;
    vector<vector<int> > point = { { 1, 5, 2, 4 },
        { 6, 2, 0, 6 },
        { 9, 5, 1, 3 },
        { 6, 7, 5, 9 } };
    minimizeHanhattan(n, k, point);
}

আউটপুট

2 2 3 6
  1. C++-এ n! % (k^x) = 0 হওয়া যেন x এর সর্বোচ্চ মান নির্ণয়

  2. C++-এ 2N সংখ্যার পারমুটেশন যাতে দিয়ে দিয়া এক্সপ্রেশনের ফলাফল ঠিক 2K হয়

  3. সি++ প্রোগ্রাম: X!-তে কমপক্ষে Yটি ট্রেইলিং জিরো থাকা সর্বনিম্ন X নির্ণয়

  4. C++ ব্যবহার করে অ্যারেতে a % b = k সেটি করার সব জোড়া (a, b) বের করা