ধরুন আমাদের ধনাত্মক পূর্ণসংখ্যার একটি তালিকা আছে; সন্নিহিত পূর্ণসংখ্যাগুলি ফ্লোটিং পয়েন্ট বিভাজন করবে। উদাহরণস্বরূপ, [2,3,4] -> 2 / 3 / 4। এখন, আমরা যেকোনো অবস্থানে যেকোনো সংখ্যক প্যারেনথেসিস যোগ করতে পারি অপারেশনগুলোর প্রাধান্য পরিবর্তন করতে। আমাদের বের করতে হবে কীভাবে প্যারেনথেসিস যোগ করলে সর্বোচ্চ ফলাফল আসবে, এবং সংশ্লিষ্ট এক্সপ্রেশন স্ট্রিং ফরম্যাটে ফেরত দিতে হবে। আমাদের এক্সপ্রেশনে অবাধ প্যারেনথেসিস থাকা উচিত নয়। তাই যদি ইনপুট হয় [1000,100,10,2], তবে ফলাফল হবে “1000/(100/10/2)”।
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব −
- n := nums অ্যারেতে আকার
- যদি n ০ হয় তবে খালি স্ট্রিং ফেরত দিন।
- num := nums[0] স্ট্রিং হিসেবে
- যদি n ১ হয়, তবে num ফেরত দিন
- যদি n ২ হয়, তবে num সংযুক্ত /, সংযুক্ত nums[1] স্ট্রিং হিসেবে ফেরত দিন
- den := একটি খালি স্ট্রিং
- i = 1 থেকে n – ১ পর্যন্ত
- den := den + nums[i] স্ট্রিং হিসেবে
- যদি i n – ১ না হয়, তবে den := den সংযুক্ত ‘/’
- num সংযুক্ত / সংযুক্ত ( সংযুক্ত den , সংযুক্ত ) ফেরত দিন
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −
উদাহরণ
#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)