কিছু কথাঃ DP Series এ আমি মূলত At Coder Educational DP কন্টেস্টের প্রব্লেমগুলো নিয়ে আলোচনা করবো এবং সেই সাথে ডিপি সল্যুশন প্রিন্ট, ডিপি অপটিমাইজেশনসহ আরো কিছু বিষয় নিয়ে আলোচনা করবো। এই সিরিজ টি পড়া শুরু করার আগে সবার ব্যাসিক ডিপি সম্পর্কে ধারণা থাকা আবশ্যক। এজন্য শাফায়েতের ব্লগ থেকে ডাইনামিক প্রোগ্রামিং এর সবগুলো পর্ব পড়ে নেয়ার জন্য অনুরোধ করছি। Problem Description here Problem: প্রব্লেমটিতে বলা হয়েছে, আমাদেরকে n টি পাথর দেয়া থাকবে। এবং প্রতিটি পাথরের উচ্চতা দেয়া থাকবে। একটি ব্যাঙ শুরুতে ১নম্বর পাথরে আছে। ব্যাঙ টি একঘর অথবা দুইঘর জাম্প করতে পারে। অর্থাৎ, i তম পাথর থেকে i+1 or i+2 তম পাথরে যেতে পারে। ith থেকে jth পাথরে যেতে তাকে দুইটি স্টোনের উচ্চতার পার্থক্যের সমান টাকা খরচ করতে হয়। বের করতে হবে n তম পাথরে পৌঁছাতে তাকে সর্বনিম্ন কত খরচ করতে হবে? Recursive Solution: ১) এই প্রব্লেমের জন্য আমাদের কয়টি স্টেট লাগবে? ভালোভাবে লক্ষ্য করলে বুঝবে শুধুমাত্র পজিশন ই স্টেট হিসেবে রাখা যথেষ্ট। ২) এরপর, প্রতি পজিশন থেকে আমি একবা...
ভেক্টরঃ ভেক্টর হচ্ছে এক প্রকার ডায়নামিক অ্যারে । অর্থাৎ, এটি অটোমেটিক্যালি রিসাইজ হবে যখনই আমরা এখানে কোন ইলিমেন্ট ইনসার্ট কিংবা ইরেজ করবো । অ্যারে তে আমরা আগে থেকেই সাইজ ডিক্লেয়ার করে থাকি , কিন্তু ভেক্টর এর কিছু বিশেষ সুবিধা হলো আগে থেকে সাইজ ডিক্লেয়ার করার দরকার হয় না, বর্তমানে কয়টা ইলিমেন্ট আছে তা কোন কাউন্টার ভ্যারিয়েবল ছাড়াই জানা যায় , যে কোন পজিশনে ইলিমেন্ট ইনসার্ট করা যায়,ডিলিট করা যায় , খুব সহজে একটা সম্পূর্ণ ভেক্টর অন্য ভেক্টরে ইনসার্ট করা যায়। কিভাবে ডিক্লেয়ার করবো? ডাটা ইরেজ করাঃ ইটারেটর এর মাধ্যমে ডাটা এক্সেস এবং ভেক্টর ক্লিয়ার করাঃ ভেক্টর সরাসরি অ্যারের মতো করে এক্সেস করা গেলেও অন্যান্য STL এভাবে এক্সেস করা যায় না। সেক্ষেত্রে, ডাটা এক্সেস এর জন্য ইটারেটর এর প্রয়োজন হয় নিচের ছবির মতো করেঃ সরাসরি n তম পজিশনে ডাটা ইনসার্ট বা ইরেজ করাঃ মনে রাখা শ্রেয় যে, এক্ষেত্রে কমপ্লেক্সিটি O(n) হবে। একটি ভেক্টরের মধ্যে আরেকটি ভেক্টর ইনসার্ট করা , দুটি ভেক্টর...
Comments
Post a Comment