সমস্যা বিবৃতি
আকার n এবং একটি সংখ্যা k এর একটি অ্যারে দেওয়া হয়েছে। আমাদের একটি অ্যারে k সংখ্যা বার বার পরিবর্তন করতে হবে।
অ্যারে পরিবর্তন করার অর্থ হল প্রতিটি অপারেশনে আমরা যেকোন অ্যারের উপাদানকে প্রতিস্থাপন করতে পারি arr[i] কে নেগেট করে অর্থাৎ arr[i] =-arr[i]। কাজটি হল এই ক্রিয়াকলাপটি এমনভাবে সম্পাদন করা যাতে k অপারেশনের পরে, একটি অ্যারের যোগফল অবশ্যই সর্বাধিক হতে হবে৷
যদি ইনপুট arr[] ={7, -3, 5, 4, -1} হয় তাহলে সর্বোচ্চ যোগফল হবে 20
- প্রথম নেগেট -3. এখন অ্যারে হয়ে যায় {7, 3, 5, 4, -1}
- নেগেট -1. এখন অ্যারে হয়ে যায় {7, 3, 5, 4, 1}
অ্যালগরিদম
<পূর্ব>1. বর্তমান অপারেশন2 এর জন্য -arr[i] দ্বারা অ্যারেতে ন্যূনতম উপাদান arr[i] প্রতিস্থাপন করুন। ন্যূনতম উপাদান 0 হয়ে গেলে, আমাদের আর কোনো পরিবর্তন করতে হবে না। এইভাবে আমরা K অপারেশনের পরে অ্যারের সর্বোচ্চ যোগফল করতে পারিউদাহরণ
(int i =1; i <=k; ++i) { int minValue =INT_MAX; int index =-1; (int j =0; jআউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট &mnus;
উৎপন্ন করেসর্বোচ্চ যোগফল =20