मान लीजिए कि हमारे पास एक आकार चर N है, हमारे पास एक चर SUM भी है, यह सरणी में उपलब्ध सभी तत्वों का कुल योग है और दूसरा चर K ऐसा है कि सरणी में कोई तत्व नहीं है K से बड़ा, हमें एक ओर्थोगोनल सरणी ढूंढनी होगी जहां सरणी के सभी तत्व अलग-अलग हों। अगर कोई समाधान नहीं है तो वापसी -1.
इसलिए, यदि इनपुट N =4, SUM =16 K =9 जैसा है, तो आउटपुट [1,2,4,9]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
न्यूनतम_योग :=(एन *(एन + 1)) / 2
-
max_sum :=(एन * के) -(एन *(एन -1)) / 2
-
यदि न्यूनतम_योग> योग या अधिकतम_योग <योग, तो
-
वापसी -1
-
-
res :=आकार N + 1 की एक सरणी और 0 से N तक भरें
-
योग :=न्यूनतम_योग
-
मैं :=एन
-
जबकि मैं>=1, करते हैं
-
x :=योग + (K - i)
-
अगर x <एसयूएम, तो
-
योग :=योग +(K - i)
-
रेस [i] :=K
-
कश्मीर:=के - 1
-
-
अन्यथा,
-
रेस [i] :=रेस [i] +(SUM - योग)
-
योग :=योग
-
लूप से बाहर आएं
-
-
मैं :=मैं - 1
-
-
रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def get_arr(N, SUM, K): minimum_sum = (N * (N + 1)) / 2 maximum_sum = (N * K) - (N * (N - 1)) / 2 if (minimum_sum > SUM or maximum_sum < SUM): return -1 res = [i for i in range(N + 1)] sum = minimum_sum i = N while(i >= 1): x = sum + (K - i) if (x < SUM): sum = sum + (K - i) res[i] = K K -= 1 else: res[i] += (SUM - sum) sum = SUM break i -= 1 return res N = 4 SUM = 16 K = 9 print(get_arr(N, SUM, K))
इनपुट
4, 16, 9
आउटपुट
[0, 1, 2, 4.0, 9]