সমস্যা বিবৃতি
একটি বাইনারি স্ট্রিং str দেওয়া. str দ্বারা উপস্থাপিত সংখ্যা তৈরি করতে সঞ্চালিত করা প্রয়োজন ন্যূনতম সংখ্যক অপারেশন খুঁজুন। শুধুমাত্র নিম্নলিখিত ক্রিয়াকলাপগুলি সম্পাদন করা যেতে পারে -
- 2 x যোগ করুন
- ২ বিয়োগ করুন x
যদি বাইনারি স্ট্রিং হয় "1000" তাহলে আমাদের শুধুমাত্র 1টি অপারেশন করতে হবে অর্থাৎ 2 3 যোগ করুন
যদি বাইনারি স্ট্রিং "101" হয় তবে আমাদের 2টি অপারেশন করতে হবে যেমন 2 2 যোগ করুন + 2 0
উদাহরণ
#include <iostream> #include <string> #include <algorithm> using namespace std; int getMinOperations(string s){ reverse(s.begin(), s.end()); int n = s.length(); int result[n + 1][2]; if (s[0] == '0') { result[0][0] = 0; } else { result[0][0] = 1; } result[0][1] = 1; for (int i = 1; i < n; ++i) { if (s[i] == '0') { result[i][0] = result[i - 1][0]; result[i][1] = 1 + min(result[i - 1][1], result[i - 1][0]); } else { result[i][1] = result[i - 1][1]; result[i][0] = 1 + min(result[i - 1][0], result[i - 1][1]); } } return result[n - 1][0]; } int main(){ string str = "101"; cout << "Minimum required operations = " << getMinOperations(str) << endl; return 0; }
আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেMinimum required operations = 2