কম্পিউটার

কেন্দ্র স্থানাঙ্ক এবং একটি বিল্ডিংয়ের উচ্চতা খুঁজে বের করতে C++ প্রোগ্রাম


ধরুন, একটি বিল্ডিং আছে যার কেন্দ্র স্থানাঙ্ক xc, yc এবং উচ্চতা h আছে। আমরা বিল্ডিংয়ের কেন্দ্র স্থানাঙ্কগুলি জানি না, তবে আমাদেরকে n টুকরো তথ্য সরবরাহ করা হয়েছে যাতে x এবং y স্থানাঙ্ক এবং একটি উচ্চতা মান a রয়েছে৷ স্থানাঙ্কের উচ্চতা (x, y) সর্বাধিক (h - |x - xc| - |y - yc|, 0)। আমাদের কেন্দ্রের স্থানাঙ্ক এবং বিল্ডিংয়ের উচ্চতা খুঁজে বের করতে হবে। কোঅর্ডিনেট xi দেওয়া হয় অ্যারে x-এ, yi দেওয়া হয় teg অ্যারে y, এবং ai দেওয়া হয় অ্যারে অ্যারে।

সুতরাং, যদি ইনপুটটি n =3, x ={3, 3, 2}, y ={4, 2, 3}, a ={6, 6, 6} এর মত হয়, তাহলে আউটপুট হবে 3 3 7।

কেন্দ্রের স্থানাঙ্কগুলি হল 3,3 এবং বিল্ডিংয়ের উচ্চতা হল 7৷

পদক্ষেপ

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

check := true
for initialize xc := 0, when xc <= 100, update (increase xc by 1), do:
   for initialize yc := 0, when yc <= 100, update (increase yc by 1), do:
      check := true
      mh := 2000000000
      h := -1
      for initialize i := 0, when i < n, update (increase i by 1), do:
         k := |(x[i] - xc) + |y[i] - yc||
         if a[i] is same as 0, then:
            mh := minimum of mh and k
         else:
            if h < 0, then:
               h := a[i] + k
            otherwise when h is not equal to a[i] + k, then:
               check := false
               Come out from the loop
      if h > mh, then:
         check := false
         Ignore following part, skip to the next iteration
      if check is non-zero, then:
         Come out from the loop
      if check is non-zero, then:
Come out from the loop
print(xc, yc, h)

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

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

void solve(int n, vector<int> x, vector<int> y, vector<int> a){
   bool check = true;
   int xc, yc, h;
   for (xc = 0; xc <= 100; xc++) {
      for (yc = 0; yc <= 100; yc++) {
         check = true;
         int k, mh = 2e9;
         h = -1;
         for(int i = 0; i < n; i++) {
            k = abs(x[i] - xc) + abs(y[i] - yc);
            if (a[i] == 0) {
               mh = min(mh, k);
            } else {
               if (h < 0) {
                  h = a[i] + k;
               } else if (h != a[i] + k) {
                  check = false;
                  break;
               }
            }
         }
         if (h > mh) {
            check = false;
            continue;
         }
         if (check) {
            break;
         }
      }
      if (check) {
         break;
      }
   }
   cout << xc << " " << yc << " " << h;
}
int main() {
   int n = 3;
   vector<int> x = {3, 3, 2}, y = {4, 2, 3}, a = {6, 6, 6};
   solve(n, x, y, a);
   return 0;
}

ইনপুট

3, {3, 3, 2}, {4, 2, 3}, {6, 6, 6}

আউটপুট

3 3 7

  1. C++ এ একটি লাইনের মধ্যবিন্দু খুঁজে বের করার জন্য প্রোগ্রাম

  2. C++ এ ত্রিভুজের সেন্ট্রোয়েড খুঁজে বের করার প্রোগ্রাম

  3. C++ এ সমান্তরালগ্রামের ক্ষেত্রফল বের করার প্রোগ্রাম

  4. C++ এ একটি গাছের সর্বোচ্চ গভীরতা বা উচ্চতা খুঁজে বের করার জন্য একটি প্রোগ্রাম লিখুন