Light OJ - 1005 - Rooks Tutorial(DP)
Problem Description here প্রব্লেমটিতে বলা হয়েছে, একটা n*n গ্রীড দেয়া থাকবে। সেখানে k সংখ্যক রুক বসাতে হবে যাতে তারা একে অন্যকে এটাক করতে না পারে। আমরা জানি, গ্রীডের যেকোন সেল রিপ্রেজেন্ট করতে দুইটা ভ্যালু লাগে। একটা সারি নং , অন্যটা কলাম নং। একটা রুক অন্য রুককে তখনই এটাক করে যখন অন্য রুক এর সাথে তার সারি নং অথবা কলাম নং মিলে যায়। সল্যুশন আইডিয়াঃ আমাকে এমনভাবে, k সংখ্যক রুক বসাতে হবে যাতে একই সারিতে দুইটা রুক বসতে না পারে এবং একই কলামে দুইটা রুক বসতে না পারে। ডিপি'র স্টেট নিবো দুইটা। স্টেট-১ঃ এখন আমি কত তম সারি তে আছি। স্টেট-২ঃ কয়টা রুক বসানো এখনো বাকি আছে। প্রতিটি অবস্থানে আমার সর্বোচ্চ দুই ধরনের অবস্থা দাঁড়াতে পারে। ১) আমি ভিজিট করি নি এমন সারির সংখ্যা যদি বাকি থাকা রুকের সংখ্যা থেকে বেশি হয়, তবে আমি বর্তমান সারি ব্যাবহার করতেও পারি। নাও করতে পারি। ২) আমি যদি বর্তমান সারি ব্যাবহার করি, তাহলে এই সারি থেকে আমাকে একটি কলাম বাছাই করে নিতে হবে। সোজা কথায় এই সারির একটা সেল বাছাই করতে হবে। যেহেতু, বর্তমানে অব্যাবহৃত রুকের সংখ্যা আমার জানা, তাই কয়টি কলাম