ধরুন আমাদের একটি সংখ্যার অ্যারে আছে এবং আরেকটি সংখ্যা k আছে, আমাদের পরীক্ষা করতে হবে যে প্রদত্ত অ্যারেকে জোড়ায় ভাগ করা যায় যাতে প্রতিটি জোড়ার যোগফল k হয় বা না হয়।
সুতরাং, যদি ইনপুট হয় arr =[1, 2, 3, 4, 5, 6], k =7, তাহলে আউটপুটটি True হবে কারণ আমরা জোড়া নিতে পারি যেমন (2, 5), (1, 6) এবং (3, 4)।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=arr এর আকার
- যদি n বিজোড় হয়, তাহলে
- মিথ্যে ফেরত দিন
- নিম্ন :=0, উচ্চ :=n - 1
- যখন কম <উচ্চ, কর
- যদি arr[low] + arr[high] k এর মত না হয়, তাহলে
- মিথ্যে ফেরত দিন
- low :=low + 1
- উচ্চ :=উচ্চ - 1
- যদি arr[low] + arr[high] k এর মত না হয়, তাহলে
- সত্য ফেরান
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(arr, k): n = len(arr) if n % 2 == 1: return False low = 0 high = n - 1 while low < high: if arr[low] + arr[high] != k: return False low = low + 1 high = high - 1 return True arr = [1, 2, 3, 4, 5, 6] k = 7 print(solve(arr, k))
ইনপুট
[1, 2, 3, 4, 5, 6], 7
আউটপুট
True