সমস্যা বিবরণ
একটি অ্যারে arr দেওয়া আছে যার আকার n। এর থেকে দুটি উপাদান arr[i] এবং arr[j] বের করতে হবে যাতে arr[i]Carr[j] (বিনোমিয়াল কোইফিশিয়েন্ট) সর্বোচ্চ হয়। একাধিক জোড়া থাকলে যেকোনো একটি রিটার্ন করুন।
উদাহরণস্বরূপ, ইনপুট [4, 1, 2] হলে আউটপুট হবে 4 2, কারণ 4C1=4, 4C2=6, 2C1=2; সর্বোচ্চ হলো 6 যা জোড়া (4,2)-এর জন্য।
সমাধানের ধাপসমূহ
- অ্যারেটি সর্ট করুন।
N := v[n-1](সর্বোচ্চ উপাদান)।- যদি
Nবিজোড় হয়:first := N // 2,second := first + 1।leftএবংrightখুঁজুন যাতেfirstএবংsecondএর সবচেয়ে কাছাকাছি মান পাওয়া যায়।first - leftএবংright - secondতুলনা করুন; যেটি ছোট তার সাথেNপ্রিন্ট করুন।
- যদি
Nজোড় হয়:max := N // 2।- অ্যারেতে
max-এর সবচেয়ে কাছাকাছি মানRখুঁজুন। NএবংRপ্রিন্ট করুন।
পাইথন কোড উদাহরণ
def findMatrixPair(v, n):
v.sort()
N = v[n - 1]
if N % 2 == 1:
first = N // 2
second = first + 1
res1 = res2 = 3 * (10 ** 18)
left = right = -1
temp = -1
for i in range(n):
if v[i] > first:
temp = i
break
else:
diff = first - v[i]
if diff < res1:
res1 = diff
left = v[i]
right = v[temp]
diff1 = first - left
diff2 = right - second
if diff1 < diff2:
print(N, left)
else:
print(N, right)
else:
max_val = N // 2
res = 3 * (10 ** 18)
R = -1
for i in range(n - 1):
diff = abs(v[i] - max_val)
if diff < res:
res = diff
R = v[i]
print(N, R)
v = [4, 1, 2]
n = len(v)
findMatrixPair(v, n) # আউটপুট: 4 2
ইনপুট
[4,1,2], 3
আউটপুট
4 2