কম্পিউটার

C++ এ ঠিক k পরিবর্তনের পরে সর্বাধিক অ্যারের যোগফল পাওয়া যাবে


আমাদেরকে ধনাত্মক এবং ঋণাত্মক পূর্ণসংখ্যার একটি অ্যারে এবং একটি সংখ্যা K দেওয়া হয়েছে। কাজটি হল K এর উপাদানগুলিতে পরিবর্তনের পরে অ্যারের সর্বাধিক যোগফল খুঁজে বের করা। এখানে একক পরিবর্তন অপারেশন একক উপাদানকে -1 দ্বারা গুণ করে।

প্রতিটি নেতিবাচক সংখ্যাকে ধনাত্মক তে রূপান্তর করতে ব্যবহৃত পদ্ধতি হবে। যদি N ঋণাত্মক সংখ্যা থাকে, তাহলে এর জন্য আমরা অ্যারে −

সাজাব
  • যদি N

  • এখন যদি K-N হয় তবে বাকি K-N অপারেশনগুলির জন্য পরিবর্তনের লক্ষণগুলির কোনও প্রভাব থাকবে না, কিছুই করবেন না৷

  • যদি K-N বিজোড় হয় তবে অবশিষ্ট K-N ক্রিয়াকলাপগুলির জন্য সর্বনিম্ন সংখ্যার চিহ্ন পরিবর্তন করুন (যা ঋণাত্মক হবে) তবে সামগ্রিক যোগফল সর্বাধিক হবে৷

    অথবা

    যদি N>K তাহলে K ঋণাত্মক সংখ্যার চিহ্ন পরিবর্তন করে অ্যারে যোগ করুন। যোগফল সর্বোচ্চ হবে।

ইনপুট

Arr[]={ 0,-2,6,4,8,2,-3 } K=4

আউটপুট

সর্বোচ্চ অ্যারের যোগফল হল :25

ব্যাখ্যা − উপাদানের 4টি পরিবর্তন হল

<পূর্ব>1. 0,2,6,4,8,2,-3 -2 পরিবর্তিত হয়েছে 22। 0,2,6,4,8,2,3 -3 পরিবর্তিত হয়েছে 33। 0,-2,6,4,8, 2,3 2 পরিবর্তিত হয়েছে -24। 0,2,6,4,8,2,3 -2 2এ পরিবর্তিত হয়েছে সর্বাধিক যোগফল 25

ইনপুট

Arr[]={ -1,-2,-3,-4,-5,-6,-7 } K=4

আউটপুট

সর্বাধিক অ্যারের যোগফল হল :16

ব্যাখ্যা − উপাদানের 4টি পরিবর্তন হল

<পূর্ব>1. -1, -2, -3, -4, -5, -6,7 -7 72 এ পরিবর্তিত হয়েছে। -1, -2, -3, -4, -5,6,7 -6 63 এ পরিবর্তিত হয়েছে। - 1,-2,-3,-4,5,6,7 -5 54 এ পরিবর্তিত হয়েছে। -1,-2,-3,4,5,6,7 -4 4এ পরিবর্তিত হয়েছে সর্বাধিক যোগফল 16

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • পূর্ণসংখ্যা অ্যারে Arr[] পূর্ণসংখ্যা সংরক্ষণ করতে ব্যবহৃত হয়।

  • পূর্ণসংখ্যা 'আকার' অ্যারের দৈর্ঘ্য সঞ্চয় করে এবং K আরম্ভ করা হয়।

  • ফাংশন রিটার্নসাম(int arr[], int n, int k) একটি অ্যারে নেয়, এর আকার এবং k ইনপুট হিসাবে এবং ঠিক k অপারেশনের পরে এটির উপাদানগুলির সর্বাধিক যোগফল ফেরত দেয়৷

  • প্রথমে আমরা sort(arr,arr+n)

    ব্যবহার করে অ্যারে সাজাব
  • এখন আমরা সমস্ত নেতিবাচক উপাদানগুলিতে অপারেশন arr[i]*-1 প্রয়োগ করব যতক্ষণ না হয় শেষ সূচকে পৌঁছায় বা k 0 হয়ে যায়।

  • যদি k নেতিবাচক উপাদানের সংখ্যা থেকে ছোট হয়, তাহলে উপরের ধাপটি k -ve উপাদানগুলিকে পরিবর্তন করবে।

  • k বড় হলে এবং k-এর অবশিষ্ট মানটি বিজোড় বা জোড় কিনা তা পরীক্ষা করা হবে।

  • যদি অবশিষ্ট k বিজোড় হয় তবে আমরা ন্যূনতম উপাদানের মান পরিবর্তন করব অপারেশন arr[i]*-1 প্রয়োগ করে, যেখানে অন্ততপক্ষে arr[i] পাওয়া যায়। ( -1 বিজোড় বার দ্বারা গুণ করা একবার করার সমান)

  • যদি অবশিষ্ট k হয় তাহলে arr[i]*-1 কোন প্রভাব ফেলবে না। কিছুই করবেন না।

  • পুরো অ্যারের যোগফল গণনা করুন এবং ফলাফল ফেরত দিন।

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;int returnSum(int arr[], int n, int k){ // অ্যারের উপাদানগুলি সাজান (arr, arr + n); // নেতিবাচক উপাদানগুলির চিহ্ন পরিবর্তন করুন // ক্ষুদ্রতম থেকে শুরু করে // এই লুপটি -ve উপাদানগুলির চিহ্ন পরিবর্তন করবে // প্রতিটি k একটি -ve উপাদানের জন্য ধনাত্মক হয়ে গেছে (i=0;i0 &&arr[i]<0){ arr[i]=arr[i]*-1; k--;}//যদি k শূন্য নয় এবং ন্যূনতম উপাদানের বিজোড় পরিবর্তনের চিহ্ন//একবার এটি তার চিহ্নের বিজোড় বার পরিবর্তনের মতই হয় (k % 2 ==1) { int min =arr[0]; int pos=0; // (i =1; i  

আউটপুট

সর্বোচ্চ অ্যারের যোগফল যা ঠিক k পরিবর্তনের পরে পাওয়া যেতে পারে :24

  1. বৃত্তাকার অ্যারেতে সর্বাধিক যোগফল যাতে C++ এ দুটি উপাদান সংলগ্ন থাকে না

  2. C++ এ K নেগেশানের পরে অ্যারের যোগফল সর্বাধিক করুন

  3. C++ এ বারবার বিয়োগ করে সব উপাদান একই করার পর সর্বাধিক অ্যারের যোগফল খুঁজুন

  4. C++ এ একটি সমষ্টি অ্যারে ধাঁধা?