কম্পিউটার

C++ এ আভিধানিক সংখ্যা


ধরুন আমাদের একটি পূর্ণসংখ্যা 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++)

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include  namespace ব্যবহার করে 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

আউটপুট

<প্রে>[1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 3, 4, 5, 6, 7, 8, 9, ]
  1. C++ এ সমমানের সংখ্যা

  2. C++ এ এমেরপ সংখ্যা

  3. সি++ এ ডুডেনি নম্বর

  4. C++ এ সবচেয়ে বড় BST সাবট্রি