কম্পিউটার

একটি পণ্য অ্যারে ধাঁধা (O(1) স্থান) C++?


এখানে আমরা অ্যারে সম্পর্কিত একটি আকর্ষণীয় সমস্যা দেখতে পাব। n উপাদান সহ একটি অ্যারে আছে. আমাদের n উপাদানের আরেকটি অ্যারে তৈরি করতে হবে। কিন্তু দ্বিতীয় অ্যারের i-th অবস্থানটি i-th উপাদান ছাড়া প্রথম অ্যারের সমস্ত উপাদানের গুণফলকে ধরে রাখবে। এবং একটি সীমাবদ্ধতা হল যে আমরা এই সমস্যাটিতে বিভাগ অপারেটর ব্যবহার করতে পারি না। কোনো অতিরিক্ত স্পেস ব্যবহার না করেই আমাদের এই সমস্যার সমাধান করতে হবে।

যদি আমরা বিভাগ, অপারেশন ব্যবহার করতে পারি, তাহলে আমরা সহজেই এই সমস্যাটি সমাধান করতে পারি, সমস্ত উপাদানের গুণফল পেয়ে, তারপর প্রথম অ্যারের i-th উপাদানকে ভাগ করে দ্বিতীয় অ্যারের i-th স্থানে সংরক্ষণ করি।

এখানে আমরা একটি টেম্প ভেরিয়েবল নিয়ে সমাধান করছি, সেটি হল বাম অংশ এবং ডান অংশের গুণফল বের করা। এই মানটি চূড়ান্ত অ্যারেতে স্থাপন করা হবে। তাই এটি অতিরিক্ত স্থান নেবে না।

অ্যালগরিদম

productArray(arr, n)

1 থেকে n রেঞ্জের i জন্য 1 টেম্প :=1 দিয়ে রেস অ্যারে পূরণ করুন, res [i] :=temp; temp :=temp * arr[i] রেঞ্জ n-1-এ 0 থেকে নিচের জন্য করা হয়েছে, do res[i] =res[i] * temp temp :=temp * arr[i] রিটার্ন রিসেন্ড করা হয়েছে

উদাহরণ

#include namespace ব্যবহার করে std;void printArray(int arr[], int n) { for(int i =0; i=0; i--) { //temp ভেরিয়েবল arr[i] পণ্য [i] *=টেম্প বাদ দিয়ে ডানদিকে উপাদানগুলির পণ্যকে ধরে রাখবে; temp *=arr[i];} }}main() { int myArr[7] ={5, 4, 7, 6, 9, 2, 3}; int resArr[7]; cout <<"প্রাথমিক অ্যারে:"; printArray(myArr, 7); প্রোডাক্ট অ্যারে (myArr, resArr, 7); cout <<"ফাইনাল অ্যারে:"; printArray(resArr, 7);}

আউটপুট

প্রাথমিক অ্যারে:5 4 7 6 9 2 3ফাইনাল অ্যারে:9072 11340 6480 7560 5040 22680 15120

  1. C++ প্রোগ্রামে একটি অ্যারের সর্বাধিক পণ্য উপসেট

  2. C++ এ অ্যারের গুণফলের পেছনের শূন্যের সংখ্যা গণনা করুন

  3. C++-এ অ্যারেতে ট্রিপলেটের সর্বোচ্চ গুণফল (আকার 3 এর পরবর্তী)

  4. C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল