ধরুন, আমাদের একটি গ্রিড দেওয়া হয়েছে যাতে 2টি সারি এবং n কলাম রয়েছে। একটি বোর্ড অন্য বোর্ডের উপর না পড়ে গ্রিডটিকে n বোর্ড দ্বারা আবৃত করতে হবে। এখন, বোর্ডগুলিকে লাল, নীল এবং সবুজের মধ্যে যে কোনও একটি রঙে রঙ করতে হবে। একে অপরের সংলগ্ন দুটি বোর্ড একই রঙ দ্বারা রঙ করা যাবে না এবং প্রয়োজন না হলে, সমস্ত রঙ ব্যবহার করতে হবে না। গ্রিডের কনফিগারেশন অ্যারে 'গ্রিড'-এ দেওয়া হয়, যেখানে গ্রিডের একটি নির্দিষ্ট বোর্ড একই ইংরেজি অক্ষর ব্যবহার করে উপস্থাপন করা হয় এবং বিভিন্ন ইংরেজি অক্ষর ব্যবহার করে বিভিন্ন বোর্ড উপস্থাপন করা হয়। আমাদের খুঁজে বের করতে হবে কত উপায়ে বোর্ডগুলো রঙ করা যায়।
সুতরাং, যদি ইনপুট n =4, grid ={"abbd", "accd"} এর মত হয়, তাহলে আউটপুট হবে 6।
প্রদত্ত মানদণ্ডকে সন্তুষ্ট করে বোর্ডগুলিকে রঙ করার জন্য 6টি ভিন্ন উপায় রয়েছে৷
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
MODVAL :=10^9 + 7 শুরু করার জন্য একটি অ্যারে সংজ্ঞায়িত করুন i :=0, যখন iউদাহরণ আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#includeনেমস্পেস ব্যবহার করে std;int solve(int n, vector grid){ int MODVAL =1e9 + 7; ভেক্টর s; জন্য (int i =0; i tvec(s.size()); যদি (s[0] ==1) tvec[0] =3; অন্য tvec[0] =6; (int i =1; i <(int)s.size(); i++) { যদি (s[i - 1] ==2 &&s[i] ==2) tvec[i] =tvec[i - 1] * 3% মোডভাল; যদি (s[i - 1] ==2 &&s[i] ==1) tvec[i] =tvec[i - 1]; যদি (s[i - 1] ==1 &&s[i] ==2) tvec[i] =tvec[i - 1] * 2% MODVAL; যদি (s[i - 1] ==1 &&s[i] ==1) tvec[i] =tvec[i - 1] * 2% MODVAL; } রিটার্ন tvec[s.size() - 1];}int main() { int n =4; ভেক্টর grid ={"abbd", "accd"}; cout< ইনপুট
4, {"abbd", "accd"}আউটপুট
6