ধরুন ফাঁকা জায়গা এবং দেয়াল সহ একটি গোলকধাঁধায় একটি বল আছে। এখন বলটি উপরে, নীচে, বাম বা ডানে যে কোনও দিক দিয়ে খালি পথ দিয়ে যেতে পারে, তবে দেওয়ালে আঘাত না করা পর্যন্ত এটি ঘূর্ণায়মান বন্ধ করবে না। বল থেমে গেলে পরবর্তী দিক বেছে নিতে পারে।
আমাদের বলের অবস্থান, গন্তব্য এবং গোলকধাঁধা শুরু করতে হবে, বলটি গন্তব্যে থামতে পারে কিনা তা পরীক্ষা করতে হবে। গোলকধাঁধাটি একটি 2D অ্যারে দ্বারা প্রতিনিধিত্ব করা হয়। এখানে 1 প্রাচীর নির্দেশ করে এবং 0 খালি স্থান নির্দেশ করে। গোলকধাঁধার সীমানা সব দেয়াল। শুরু এবং গন্তব্য স্থানাঙ্ক সারি এবং কলাম সূচক দ্বারা প্রতিনিধিত্ব করা হয়।
সুতরাং, যদি ইনপুটটি একটি ধাঁধাঁর মতো হয় যা একটি 2D অ্যারে দ্বারা প্রতিনিধিত্ব করে
0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
শুরুর অবস্থান হল (0, 4) গন্তব্য অবস্থান হল (4, 4), তারপর আউটপুট সত্য হবে, একটি সম্ভাব্য উপায় হল − left নিচে ডানে .
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#includenamespace ব্যবহার করে std;class Solution {সর্বজনীন:bool hasPath(vector &grid, vector q; q. push(শুরু); সেট<ভেক্টর পরিদর্শন করা হয়েছে; visited.insert(start); যখন (!q.empty()) { ভেক্টর =0 &&!গ্রিড[i - 1][y]) i--; যদি (!visited.count({ i, y })) { visited.insert({ i, y }); q.push({ i, y }); } i =y; যখন (i + 1 =0 &&!গ্রিড[x][i - 1]) i--; যদি (!visited.count({ x, i })) { visited.insert({ x, i }); q.push({ x, i }); } } ফেরত মিথ্যা; }};প্রধান(){সমাধান ob; ভেক্টর<ভেক্টর v ={{0,0,1,0,0},{0,0,0,0,0},{0,0,0,1,0},{1,1 ,0,1,1},{0,0,0,0,0}}; ভেক্টর ইনপুট
<প্রে>{0,0,1,0,0},{0,0,0,0,0},{0,0,0,1,0},{1,1,0,1,1 },{0,0,0,0,0}},{0,4},{4,4}
আউটপুট
1