এই সমস্যায়, আমাদের n আকারের একটি অ্যারে অ্যারে [] এবং একটি পূর্ণসংখ্যা k দেওয়া হয়েছে। আমাদের কাজ হল সূচী i থেকে j পর্যন্ত সাবয়ারে খুঁজে বের করা এবং এর সমস্ত উপাদানের বিটওয়াইজ এবং গণনা করা। এই প্রিন্ট করার পর abs-এর সর্বনিম্ন মান(K- (সাবয়ারের বিটওয়াইজ এবং))।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
ইনপুট − arr[] ={5, 1}, k =2
আউটপুট −
সমস্যা সমাধানের জন্য, কয়েকটি পদ্ধতি থাকতে পারে।
একটি সহজ সমাধান সরাসরি পদ্ধতি ব্যবহার করা হবে। বিটওয়াইজ এবং সমস্ত সাব-অ্যারের জন্য তারপর |K-X| খুঁজে বের করে।
ধাপ 1 − বিটওয়াইজ এবং সমস্ত সাব-অ্যারের জন্য খুঁজুন।
ধাপ 2 − উপরের ধাপ 1 থেকে পাওয়া প্রতিটি মানের জন্য (বলুন X)। |k - X| এর মান খুঁজুন।
ধাপ 3 − উপরে পাওয়া ন্যূনতম মানটিকে একটি ন্যূনতম ভেরিয়েবলে সংরক্ষণ করুন৷
৷পদক্ষেপ 4৷ − শেষে, প্রিন্ট মিন।
উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
#include <iostream> using namespace std; int CalcBitwiseANDClosestK(int arr[], int n, int k){ int minimum = 1000; for (int i = 0; i < n; i++) { int X = arr[i]; for (int j = i; j < n; j++) { X &= arr[j]; minimum = min(minimum, abs(k - X)); } } return minimum; } int main() { int arr[] = { 1, 6 , 4, 9, 7 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 5; cout<<"Minimum value difference between Bitwise AND of sub-array and K is "<<CalcBitwiseANDClosestK(arr, n, k); return 0; }
আউটপুট
Minimum value difference between Bitwise AND of sub-array and K is 1
আরেকটি সমাধান হতে পারে সাব-অ্যারেতে AND অপারেশন পর্যবেক্ষণ করা। বিটওয়াইজ এবং এর একটি বৈশিষ্ট্য রয়েছে যে এটি কখনই বাড়বে না। সুতরাং, আমাদের ন্যূনতম পার্থক্যের উপর নজর রাখতে হবে যা X ≤ K হলে বাড়বে।
উদাহরণ
#include <iostream> using namespace std; int CalcBitwiseANDClosestK(int arr[], int n, int k){ int minimum = 1000000; for (int i = 0; i < n; i++) { int BitwiseAND = arr[i]; for (int j = i; j < n; j++) { BitwiseAND &= arr[j]; minimum = min(minimum, abs(k - BitwiseAND)); if (BitwiseAND <= k) break; } } return minimum; } int main() { int arr[] = {1, 6 , 4, 9, 7 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 5; cout<<"Minimum value difference between Bitwise AND of sub-array and K is "<<CalcBitwiseANDClosestK(arr, n, k); return 0; }
আউটপুট
Minimum value difference between Bitwise AND of sub-array and K is 1