কম্পিউটার

C++ কোড খরগোশ দ্বারা বাক্স টানার মোট সময় খুঁজে বের করুন


ধরুন আমাদের দুটি স্থানাঙ্ক (x1, y1) এবং (x2, y2) আছে। একটি খরগোশ খাবারের বাক্স টানছে। তিনি শুধুমাত্র 1 ইউনিট আকারের দড়ি দিয়ে একটি দড়ি দিয়ে সংযুক্ত করেছিলেন। খরগোশ বাক্সটিকে 1 ইউনিট দ্বারা একই দিকে সরানোর আগে যেখানে দাঁড়িয়ে আছে সেখানে টেনে নিয়ে যাবে। খরগোশ বাক্সটি না টেনে 1 ইউনিট ডানে, বামে, উপরে বা নীচে সরাতে পারে। এই ক্ষেত্রে, এটি বাক্স থেকে সঠিকভাবে 1 ইউনিট দূরে থাকা আবশ্যক নয়। সে যদি বাক্সটি আবার টেনে আনতে চায়, তাহলে অবশ্যই বাক্সের পাশের একটি বিন্দুতে যেতে হবে। খরগোশ যে কোন সময়ে শুরু করতে পারে। যেকোনো দিক থেকে 1 ইউনিট ভ্রমণ করতে 1 সেকেন্ড সময় লাগে। বাক্সটিকে শুরুর অবস্থান থেকে শেষ অবস্থানে নিয়ে যাওয়ার জন্য আমাদের সর্বনিম্ন সময় খুঁজে বের করতে হবে৷

সুতরাং, ইনপুট যদি x1 =1 এর মত হয়; y1 =1; x2 =2; y2 =2, তাহলে আউটপুট হবে 4, কারণ খরগোশ বিন্দুতে (2,1) শুরু করতে পারে। এটি (3,1) থাকা অবস্থায় বাক্সটিকে (2,1) এ টেনে নিয়ে যায়। তারপরে বাক্সটি না টেনে (3,2) এবং তারপরে (2,2) এ চলে যায়। তারপর, (2,3) যাওয়ার সময় বাক্সটিকে (2,2) এ টেনে আনে। এটি 4 সেকেন্ড সময় নেয়।

পদক্ষেপ

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

s := 0
if x1 is not equal to x2 and y1 is not equal to y2, then:
   s := |x2 - x1| + |y2 - y1|
Otherwise
   s := |x2 - x1| + |y2 - y1|
return s

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
int solve(int x1, int y1, int x2, int y2){
   int s = 0;
   if (x1 != x2 && y1 != y2)
      s = abs(x2 - x1) + abs(y2 - y1) + 2;
   else
      s = abs(x2 - x1) + abs(y2 - y1);
   return s;
}
int main(){
   int x1 = 1;
   int y1 = 1;
   int x2 = 2;
   int y2 = 2;
   cout << solve(x1, y1, x2, y2) << endl;
}

ইনপুট

1, 1, 2, 2

আউটপুট

4

  1. C++ এ সেলিব্রিটি খুঁজুন

  2. C++ এর মধ্যে পার্থক্য খুঁজুন

  3. C++ এ সংক্ষিপ্ততম সুপারস্ট্রিং খুঁজুন

  4. C++ এ সবচেয়ে কাছের প্যালিনড্রোম খুঁজুন