কম্পিউটার

C++ প্রোগ্রাম আলোকিত হতে পারে এমন সর্বাধিক সংখ্যক কক্ষ খুঁজে বের করতে


ধরুন, আমাদেরকে h * w মাত্রার একটি গ্রিড দেওয়া হয়েছে। গ্রিডের কোষগুলিতে একটি বাল্ব বা বাধা থাকতে পারে। একটি আলোর বাল্ব কোষ তার ডান, বাম, উপরে এবং নীচে কোষগুলিকে আলোকিত করে এবং কোনও বাধা কোষ আলোকে অবরুদ্ধ না করলে আলোটি কোষের মধ্য দিয়ে জ্বলতে পারে। একটি বাধা কোষকে আলোকিত করা যায় না এবং এটি একটি বাল্ব কোষের আলোকে অন্য কোষে পৌঁছাতে বাধা দেয়। আমাদেরকে স্ট্রিংগুলির একটি অ্যারেতে গ্রিড দেওয়া হয়েছে, যেখানে '#' একটি বাধা এবং '।' একটি খালি ঘর প্রতিনিধিত্ব করে। আমাদের শুধুমাত্র একটি বাল্ব আছে এবং আমাদের সর্বাধিক সংখ্যক সেল খুঁজে বের করতে হবে যা আমরা গ্রিডে বাল্বটিকে সর্বোত্তমভাবে স্থাপন করে আলোকিত করতে পারি।

সুতরাং, যদি ইনপুটটি h =4, w =4, গ্রিড ={"#...", "....", "...#", "...."} হয়, তাহলে আউটপুট 7 হবে।

C++ প্রোগ্রাম আলোকিত হতে পারে এমন সর্বাধিক সংখ্যক কক্ষ খুঁজে বের করতে

ইমেজ থেকে, আমরা গ্রিডে আলোকিত কোষ দেখতে পাচ্ছি।

পদক্ষেপ

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

শুরু করার জন্য প্রথমে একটি 2D অ্যারে সংজ্ঞায়িত করুন i :=0, যখন i =0, আপডেট করুন (j 1 দ্বারা কম করুন), do:যদি গ্রিড[i, j] '#' এর মতো হয়, তাহলে:k :=0 নিম্নলিখিত অংশটিকে উপেক্ষা করুন, পরবর্তী পুনরাবৃত্তিতে যান:k :=সর্বোচ্চ k এবং প্রথম [i, j] প্রথম[i, j] :=j শুরু করার জন্য একটি 2D অ্যারে সেকেন্ড নির্ধারণ করুন j :=0, যখন j =0, আপডেট করুন (i 1 দ্বারা কম করুন), করুন:যদি গ্রিড[i, j] '#' এর মতো হয়, তাহলে:k :=0 নিম্নলিখিত অংশটিকে উপেক্ষা করুন, এড়িয়ে যান পরবর্তী পুনরাবৃত্তি অন্য:k :=k এর সর্বোচ্চ এবং সেকেন্ড[i, j] সেকেন্ড[i, j] :=kresult :=0 শুরু করার জন্য 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

  1. একটি গ্রিডে আলোকিত কোষের সংখ্যা খুঁজে বের করার জন্য C++ প্রোগ্রাম

  2. একটি গ্রাফ থেকে সর্বাধিক স্কোর কমানো যেতে পারে তা খুঁজে বের করতে C++ প্রোগ্রাম

  3. একটি পাথ তৈরি করতে একটি গ্রিডে ব্লক করার জন্য সেলের সংখ্যা খুঁজে বের করার জন্য C++ প্রোগ্রাম

  4. পাইথনে যে কয়েন সংগ্রহ করা যায় তার সর্বাধিক সংখ্যা খুঁজে বের করতে সমস্যা