ধরুন আমাদেরকে N আকারের একটি বিন্যাস খুঁজে বের করতে হবে যাতে প্রতি দুটি পরপর সংখ্যার মধ্যে পরম পার্থক্য হল K। উত্তরের প্রতিটি সংখ্যার শূন্য সংখ্যা ব্যতীত অগ্রণী শূন্য থাকতে হবে না।
সুতরাং, যদি ইনপুটটি N =4 K =7 এর মত হয়, তাহলে আউটপুট হবে [1818, 2929, 7070, 8181, 9292], এখানে 0707 বৈধ নয় কারণ এটির লিডিং 0 রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি N 1 এর মত হয়, তাহলে
-
রেঞ্জ 0 থেকে 9
থেকে একটি নতুন তালিকা ফেরত দিন
-
-
সারি :=1 থেকে 9 পর্যন্ত সমস্ত উপাদানের সাথে একটি সারি তৈরি করুন
-
0 থেকে N - 2 পরিসরে n-এর জন্য, করুন
-
len_queue :=সারির আকার
-
j-এর জন্য 0 থেকে len_queue - 1, করুন
-
num :=সারির বাম আইটেম, এবং সারি থেকে মুছে ফেলুন
-
lsd :=num mod 10
-
যদি lsd - K>=0 হয়, তাহলে
-
সারির শেষে num * 10 + lsd - K সন্নিবেশ করুন
-
-
যদি K এবং 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]