ধরুন, আমাদের কাছে এই −
এর মত সংখ্যার একটি অ্যারে আছেconst arr =[1, 2, 3, 4, 5];
প্রতিবার একটি উপাদান কম নিলে, এই অ্যারেটিকে এভাবে আলাদা করা যেতে পারে −
<প্রে>[1, 2, 3, 4, 5][2, 3, 4, 5][3, 4, 5][4, 5][5][]আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এইরকম একটি অ্যারেতে নেয়। ফাংশনটি উপরে বর্ণিত একইভাবে অ্যারেকে আলাদা করা উচিত।
ফাংশনটি তারপর এই অংশগুলির সংশ্লিষ্ট যোগফল সমন্বিত একটি অ্যারে তৈরি করবে এবং সেই অ্যারেটি ফিরিয়ে দেবে৷
অতএব, এই অ্যারের জন্য, আউটপুট −
এর মত হওয়া উচিতকনস্ট আউটপুট =[15, 14, 12, 9, 5 0];
এই সমস্যা সমাধানের জন্য আমরা ডায়নামিক প্রোগ্রামিং ব্যবহার করব। আমরা প্রথমে O(n) সময়ে সম্পূর্ণ অ্যারের যোগফল গণনা করব, যা শেষ পর্যন্ত অ্যারের প্রথম উপাদানে পরিণত হবে। তারপর অন্য পুনরাবৃত্তিতে, আমরা আউটপুট অ্যারে উপাদানগুলি পেতে সংশ্লিষ্ট উপাদানগুলিকে বিয়োগ করতে থাকব। এইভাবে আমরা O(n) সময় এবং O(1) স্থানে এই সমস্যার সমাধান করতে পারি।
উদাহরণ
const arr =[1, 2, 3, 4, 5];const sumArray =(arr =[]) => arr.reduce((a, b) => a + b, 0); const partialSum =(arr =[]) => { যাক sum =sumArray(arr); const res =[সমষ্টি]; জন্য(আলো i =0; iআউটপুট
এটি নিম্নলিখিত আউটপুট −
তৈরি করবে <প্রে>[ 15, 14, 12, 9, 5, 0 ]