मान लीजिए कि हमारे पास एक संख्या n है। हमें निम्नलिखित तरीके से n + 1 लंबाई की एक सरणी A उत्पन्न करनी है -
-
ए[0] =0
-
ए[1] =1
-
ए [2 * आई] =ए [i] अगर 2 <=2 * मैं <=n
-
ए [2 * आई + 1] =ए [i] + ए [i + 1] अगर 2 <=2 * i + 1 <=n
अंत में हमें सरणी अंकों में अधिकतम संख्या ज्ञात करनी होगी।
इसलिए, यदि इनपुट n =5 जैसा है, तो आउटपुट 3 होगा क्योंकि
-
ए[0] =0
-
ए[1] =1
-
ए[2] =ए[1] =1
-
ए[3] =ए[1] + ए[2] =1 + 1 =2
-
ए[4] =ए[2]=1
-
ए[5] =ए[2] + ए[3] =1 + 2 =3
-
ए[6] =ए[3] =2
तो अधिकतम 3
. हैइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
A :=0 से n तक की एक नई सूची
-
प्रत्येक तत्व के लिए मैं ए में, करता हूं
-
अगर मैं 0 के समान हूं या मैं 1 के समान हूं, तो
-
अगले पुनरावृत्ति पर जाएं
-
-
अन्यथा जब मैं सम हो, तब
-
A[i] :=A[i/2 का पूर्णांक]
-
-
अन्यथा,
-
A[i] :=A[i/2 का पूर्णांक] + A[(i/2 का पूर्णांक) + 1]
-
-
-
ए का अधिकतम तत्व लौटाएं
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n): A = list(range(0,n+1)) for i in A: if i == 0 or i == 1: continue elif i%2 == 0: A[i] = A[i//2] else: A[i] = A[i//2] + A[(i//2) + 1] return max(A) n = 5 print(solve(n))
इनपुट
5
आउटपुट
3