ধরুন আমাদের একটি পূর্ণসংখ্যা n আছে। আমাদের অভিধানিক ক্রমে 1 থেকে n ফিরতে হবে। উদাহরণস্বরূপ, যখন 13 দেওয়া হয়, তখন আউটপুট হবে [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
n
আকারের একটি অ্যারে রেট সংজ্ঞায়িত করুন -
curr :=1
-
0 থেকে n – 1
রেঞ্জের i জন্য-
ret[i] :=curr
-
যদি curr * 10 <=n, তাহলে curr :=curr * 10
সেট করুন -
অন্যথায়
-
যদি curr>=n, তাহলে curr :=curr / 10
-
1 দ্বারা curr বাড়ান
-
যখন curr 10 দ্বারা বিভাজ্য, তারপর curr :=curr / 10
-
-
-
রিটার্ন রিটার্ন
উদাহরণ(C++)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#includenamespace ব্যবহার করে std;void print_vector(vector v){ cout <<"["; for(int i =0; i lexicalOrder(int n) { vector ret(n); int curr =1; for(int i =0; i =n)curr /=10; curr +=1; যখন (curr % 10 ==0) curr/=10; } } রিটার্ন রিটার্ন; }}; main(){সমাধান ob; print_vector(ob.lexicalOrder(20));}
ইনপুট
20