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

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


দেওয়া পয়েন্ট (x,y) এবং লেন্থ/ব্রেডথ রেশিও l:b। এই রেশিও মেনে একটি রেক্ট্যাঙ্গল খুঁজতে হবে যেটি পয়েন্টটি কভার করে। একাধিক হলে সেটি বেছে নিতে হবে যেটির সেন্টার পয়েন্টটির সবচোয় নিকট।

অ্যালগরিদম

  1. রেশিও l/b সরল করুন (GCD দিয়ে ভাগ করুন)।
  2. k = min(n/l, m/b) বের করুন (বাউন্ডারি n×m এর মধ্যে রাখতে)।
  3. পয়েন্টকে সেন্টার ধরে রেক্ট্যাঙ্গল বানান।
  4. বাউন্ডারি বাইরে চলে গেলে এডজাস্ট করুন।

C++ কোড উদাহরণ

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

int gcd(int a, int b) { return a==0 ? b : gcd(b%a, a); }

void calc_coords(int n, int m, int x, int y, int l, int b) {
    int g = gcd(l, b); l /= g; b /= g;
    int k = min(n/l, m/b);
    int x1 = x - (k*l - k*l/2);
    int x2 = x + k*l/2;
    int y1 = y - (k*b - k*b/2);
    int y2 = y + k*b/2;
    if (x1 < 0) { x2 -= x1; x1 = 0; }
    if (x2 > n) { x1 -= x2-n; x2 = n; }
    if (y1 < 0) { y2 -= y1; y1 = 0; }
    if (y2 > m) { y1 -= y2-m; y2 = m; }
    cout << "Coordinates: " << x1 << " " << y1 << " " << x2 << " " << y2 << endl;
}

int main() {
    calc_coords(50, 20, 10, 6, 4, 7);
    return 0;
}

আউটপুট

Coordinates: 6 0 14 14
  1. সি++ কোড: ম্যানহ্যাটন দূরত্বের শর্ত পূরণকারী পয়েন্ট বের করুন

  2. C++ প্রোগ্রাম: দেওয়া পূর্ণসংখ্যাগুলো থেকে সর্বোচ্চ ট্যালি মান নির্ণয়

  3. C++ প্রোগ্রাম: গ্রাফে ব্রিজ এজের সংখ্যা নির্ণয়

  4. C++ প্রোগ্রাম: দিয়ে गये সিকোয়েন্স থেকে লংগেস্ট ইনক্রিজিং সাবসিকোয়েন্স খুঁজে বের করা