ধরুন, আমাদেরকে h * w মাত্রার একটি গ্রিড দেওয়া হয়েছে। গ্রিডের কোষগুলিতে একটি বাল্ব বা বাধা থাকতে পারে। একটি আলোর বাল্ব কোষ তার ডান, বাম, উপরে এবং নীচে কোষগুলিকে আলোকিত করে এবং কোনও বাধা কোষ আলোকে অবরুদ্ধ না করলে আলোটি কোষের মধ্য দিয়ে জ্বলতে পারে। একটি বাধা কোষকে আলোকিত করা যায় না এবং এটি একটি বাল্ব কোষের আলোকে অন্য কোষে পৌঁছাতে বাধা দেয়। আমাদেরকে স্ট্রিংগুলির একটি অ্যারেতে গ্রিড দেওয়া হয়েছে, যেখানে '#' একটি বাধা এবং '।' একটি খালি ঘর প্রতিনিধিত্ব করে। আমাদের শুধুমাত্র একটি বাল্ব আছে এবং আমাদের সর্বাধিক সংখ্যক সেল খুঁজে বের করতে হবে যা আমরা গ্রিডে বাল্বটিকে সর্বোত্তমভাবে স্থাপন করে আলোকিত করতে পারি।
সুতরাং, যদি ইনপুটটি h =4, w =4, গ্রিড ={"#...", "....", "...#", "...."} হয়, তাহলে আউটপুট 7 হবে।
ইমেজ থেকে, আমরা গ্রিডে আলোকিত কোষ দেখতে পাচ্ছি।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
শুরু করার জন্য প্রথমে একটি 2D অ্যারে সংজ্ঞায়িত করুন i :=0, যখন iউদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#includeনেমস্পেস ব্যবহার করে std;int solve(int h, int w, vector grid){ vector > first(h, vector (w) ); for(int i =0; i =0; j--) { if(grid[i][j] =='#') { k =0; চালিয়ে যাওয়া } অন্য { k =সর্বোচ্চ(k, প্রথম[i][j]); প্রথম [i][j] =k; } } } ভেক্টর<ভেক্টর > সেকেন্ড(h, ভেক্টর (w)); for(int j =0; j =0; i--) { if(grid[i][j] =='#') { k =0; চালিয়ে যাওয়া } অন্য { k =সর্বোচ্চ(k, সেকেন্ড[i][j]); দ্বিতীয় [আমি] [জে] =কে; } } } int ফলাফল =0; for(int i =0; i গ্রিড ={"#...", "....", "...#", "...."}; cout<<সমাধান(h, w, grid); রিটার্ন 0;
ইনপুট
4, 4, {"#...", "....", "...#", "...."}
আউটপুট
7