কম্পিউটার

C++ এ সর্বোত্তম বিভাগ


ধরুন আমাদের ধনাত্মক পূর্ণসংখ্যার একটি তালিকা আছে; সংলগ্ন পূর্ণসংখ্যাগুলি ফ্লোট বিভাগ সম্পাদন করবে। সুতরাং উদাহরণস্বরূপ, [2,3,4] -> 2 / 3 / 4। এখন, আমরা এই অপারেশনগুলির অগ্রাধিকার পরিবর্তন করতে যে কোনও অবস্থানে যে কোনও বন্ধনী যুক্ত করতে পারি। সর্বাধিক ফলাফল পেতে আমাদের কীভাবে বন্ধনী যুক্ত করতে হয় তা খুঁজে বের করা উচিত, আমাদের স্ট্রিং বিন্যাসে সংশ্লিষ্ট অভিব্যক্তিটি খুঁজে বের করতে হবে। আমাদের অভিব্যক্তিতে অপ্রয়োজনীয় বন্ধনী থাকা উচিত নয়। সুতরাং ইনপুট যদি [1000,100,10,2] এর মত হয়, তাহলে ফলাফল হবে “1000/(100/10/2)”।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • n :=সংখ্যা অ্যারের আকার
  • যদি n 0 হয় তাহলে একটি ফাঁকা স্ট্রিং দিন।
  • num :=nums[0] স্ট্রিং হিসাবে
  • যদি n 1 হয়, তাহলে সংখ্যা ফেরত দিন
  • যদি n 2 হয়, তাহলে num concatenate /, concatenate nums[1] স্ট্রিং হিসাবে ফেরত দিন
  • ডেন :=একটি খালি স্ট্রিং
  • আমি 1 থেকে n – 1
      পরিসরে
    • den :=den + nums[i] স্ট্রিং হিসাবে
    • যদি আমি n – 1 না হয়, তাহলে den :=den concatenate ‘/’
  • রিটার্ন num concatenate / concatenate ( concatenate den , concatenate )

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string optimalDivision(vector<int>& nums) {
      int n = nums.size();
      if(n == 0) return "";
      string num = to_string(nums[0]);
      if(n == 1) return num;
      if(n == 2) return num + "/" + to_string(nums[1]);
      string den = "";
      for(int i = 1; i < n; i++){
         den += to_string(nums[i]);
         if(i != n - 1) den += "/";
      }
      return num + "/" + "(" + den + ")";
   }
};
main(){
   vector<int> v = {1000,100,10,2};
   Solution ob;
   cout << (ob.optimalDivision(v));
}

ইনপুট

[1000,100,10,2]

আউটপুট

1000/(100/10/2)

  1. C++ Enum

  2. C++ এ স্বাক্ষরবিহীন পূর্ণসংখ্যার জন্য বিভাগ অ্যালগরিদম পুনরুদ্ধার করা হচ্ছে

  3. সর্বোত্তম পৃষ্ঠা প্রতিস্থাপন অ্যালগরিদমের জন্য C++ প্রোগ্রাম

  4. C++ এ শনাক্তকারী