মান করুন আমরা একটি সরলীকৃত প্যাকম্যান গেম খেলছি। আমরা (0, 0) পয়েন্ট থেকে শুরু করি, এবং আমাদের গন্তব্য (target[0], target[1])। মানচিত্রে কিছু গোস্ট আছে, i-তম গোস্ট (ghosts[i][0], ghosts[i][1])-এ শুরু করে। প্রতিটি টার্নে, আমরা এবং সব গোস্ট সিমালটেনিয়াসলি ৪টি কার্ডিনাল দিকের যেকোনো একটিতে (উত্তর, পূর্ব, পশ্চিম, দক্ষিণ) ১ ইউনিট দূরত্বে যেতে পারি। আমরা তभी পলায়ন করতে পারব যদি আমরা যেকোনো গোস্ট আমাদের ধাক্কা দেওয়ার আগে গন্তব্যে পৌঁছাতে পারি (গোস্ট যেকোনো মুভ নেওয়ার জন্য)। যদি আমরা যেকোনো স্কোয়ারে (গন্তব্য সহ) গোস্টের সাথে একই সময়ে পৌঁছাই, তবে সেটি পলায়ন হিসাব হবে না। আমাদের তখন true ফেরত দিতে হবে যখন পলায়ন সম্ভব।
যদি ইনপুট হয় [[1,0], [0,3]] এবং টার্গেট [0,1], তবে ফলাফল হবে true। কারণ আমরা সরাসরি গন্তব্য (0, 1)-এ সময় ১-এ পৌঁছাতে পারি, যখন গোস্টরা (1, 0) বা (0, 3)-এ থেকে আমাদের ধাক্কা দিতে পারে না।
এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −
me := |target[1]| + |target[0]|x := 0i = 0থেকে গোস্ট অ্যারের আকার - ১ পর্যন্তx := |ghosts[i][0] - target[0]| + |ghosts[i][1] - target[1]|- যদি
x <= meহয়, তবে false ফেরত দিন
- true ফেরত দিন
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool escapeGhosts(vector<vector<int>>& ghosts, vector<int>& target) {
int me = abs(target[1]) + abs(target[0]);
int x = 0;
for(int i = 0; i < ghosts.size(); i++){
x = abs(ghosts[i][0] - target[0]) + abs(ghosts[i][1] - target[1]);
if(x <= me) return false;
}
return true;
}
};
main(){
vector<vector<int>> v1 = {{1,0}, {0,3}};
vector<int> v2 = {0,1};
Solution ob;
cout << (ob.escapeGhosts(v1, v2));
}
ইনপুট
[[1,0],[0,3]] [0,1]
আউটপুট
1