मान लीजिए हमें आकार N की एक सरणी ढूंढनी है जैसे कि प्रत्येक दो लगातार अंकों के बीच पूर्ण अंतर K है। उत्तर में प्रत्येक संख्या में संख्या 0 को छोड़कर अग्रणी शून्य नहीं होना चाहिए।
इसलिए, यदि इनपुट N =4 K =7 जैसा है, तो आउटपुट [1818, 2929, 7070, 8181, 9292] होगा, यहां 0707 मान्य नहीं है क्योंकि इसमें 0 से आगे है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर N 1 के समान है, तो
-
0 से 9 तक की नई सूची लौटाएं
-
-
कतार:=1 से 9 तक के सभी तत्वों के साथ एक कतार बनाएं
-
n के लिए 0 से N - 2 की सीमा में, करें
-
len_queue :=कतार का आकार
-
j के लिए 0 से len_queue -1 तक की श्रेणी में, करें
-
num :=कतार का बायां आइटम, और इसे कतार से हटा दें
-
एलएसडी:=संख्या मॉड 10
-
अगर एलएसडी - के>=0, तो
-
कतार के अंत में num * 10 + lsd - K डालें
-
-
अगर के और एलएसडी + के <=9, तो
-
कतार के अंत में num * 10 + lsd + K डालें
-
-
-
-
कतार के तत्वों को वापस करें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import deque def solve(N, K): if N == 1: return list(range(10)) queue = deque(list(range(1, 10))) for n in range(N - 1): len_queue = len(queue) for j in range(len_queue): num = queue.popleft() lsd = num % 10 if lsd - K >= 0: queue.append( num * 10 + lsd - K ) if K and lsd + K <= 9: queue.append( num * 10 + lsd + K ) return list(queue) N = 4 K = 7 print(solve(N, K))
इनपुट
4, 7
आउटपुट
[1818, 2929, 7070, 8181, 9292]