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

C++-এ সব পয়েন্ট ভিজিট করার জন্য ন্যূনতম সময়


ধরুন কিছু পয়েন্ট দেওয়া আছে অ্যারে হিসেবে। আমাদের সব পয়েন্ট ভিজিট করার জন্য ন্যূনতম সময় সেকেন্ডে বের করতে হবে। কিছু কন্ডিশন আছে।

  • এক সেকেন্ডে, এটি ভার্টিক্যালি, হরিজেন্টালি এবং ডায়াগোনালি মুভ করতে পারে
  • আমাদের পয়েন্টগুলো उसी অর্ডারে ভিজিট করতে হবে যেভাবে তারা অ্যারেতে আছে।

তাই যদি পয়েন্টগুলো [(1, 1), (3, 4), (-1, 0)] হয়, তবে আউটপুট হবে ৭। যদি শর্টেস্ট রুটের সিকোয়েন্স চেক করি, সিকোয়েন্স হবে (1, 1), (2, 2), (3, 3), (3, 4), (2, 3), (1, 2), (0, 1), (-1, 0)

এটি সমাধানের জন্য আমরা শুধু দুটি কনsekutিভ পয়েন্টের x কোঅর্ডিনেট ডিফারেন্স এবং y কোঅর্ডিনেট ডিফারেন্সের সর্বোচ্চ মান বের করব। সর্বোচ্চ মানগুলো একসাথে যোগ করব।

উদাহরণ

বুঝতে নিচের ইমপ্লিমেন্টেশনটি দেখুন −

#include <bits/stdc++.h> using namespace std; class Solution {    public:       int minTimeToVisitAllPoints(vector<vector<int>>& p) {          int ans = 0;          int n = p.size();          for(int i = 1; i < n; i++){             ans += max(abs(p[i][0] - p[i-1][0]), abs(p[i][1] - p[i-1] [1]));          }          return ans;       } }; main(){    Solution ob;    vector<vector<int>> c = {{1,1},{3,4},{-1,0}};    cout << ob.minTimeToVisitAllPoints(c); }

ইনপুট

[[1,1],[3,4],[-1,0]]

আউটপুট

7

  1. C++-এ ট্রিতে সব আপেল কালেক্ট করতে ন্যূনতম সময়

  2. C++-এ নাইটের ন্যূনতম মুভ গণনা করুন

  3. C++-এ সকল কর্মীকে জানাতে প্রয়োজনীয় সময় গণনা

  4. C++-এ বাইনারি স্ট্রিং-এ ১ বামে এবং ০ ডানে আনতে মিনিমাম ফ্লিপ