কম্পিউটার

C++ এ সুন্দর আয়োজন


ধরুন আমাদের 1 থেকে N পূর্ণসংখ্যা রয়েছে৷ আমরা একটি সুন্দর বিন্যাসকে একটি অ্যারে হিসাবে সংজ্ঞায়িত করব যা এই এন সংখ্যাগুলি দ্বারা সম্পূর্ণরূপে নির্মিত হয় যদি এই অ্যারেতে ith অবস্থানের (1 <=i <=N) জন্য নিম্নলিখিতগুলির একটি সত্য হয় −

  • ith অবস্থানে থাকা সংখ্যাটিকে i দ্বারা ভাগ করা যায়।
  • i ith অবস্থানে সংখ্যা দ্বারা বিভাজ্য।

সুতরাং যদি ইনপুট 2 হয়, তবে ফলাফলটিও 2 হবে, যেমন প্রথম সুন্দর বিন্যাস [1,2]। এখানে ১ম অবস্থানে (i=1) সংখ্যা হল 1, এবং 1 হল i (i=1) দ্বারা বিভাজ্য। তারপর ২য় অবস্থানে (i=2) সংখ্যা হল 2, এবং 2 হল i (i=2) দ্বারা বিভাজ্য। দ্বিতীয় সুন্দর বিন্যাস হল [2, 1]:এখানে ১ম অবস্থানে (i=1) সংখ্যা হল 2, এবং 2 হল i (i=1) দ্বারা বিভাজ্য। তারপর ২য় অবস্থানে থাকা সংখ্যা (i=2) হল 1, এবং i (i=2) হল 1 দ্বারা বিভাজ্য৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি পুনরাবৃত্ত পদ্ধতি সংজ্ঞায়িত করুন solve(), যা ভিজিট করা অ্যারে, এন্ড এবং pos নেবে। পোস প্রাথমিকভাবে 1।
  • যদি pos =end + 1 হয়, তাহলে উত্তর 1 দ্বারা বাড়ান এবং ফেরত দিন
  • আমি রেঞ্জ 1 থেকে শেষ পর্যন্ত
      i
    • আমি ভিজিট করেছি হিসেবে চিহ্নিত করুন
    • সমাধান (ভিজিট করা, শেষ, pos + 1)
    • আমাকে দেখা হয়নি বলে চিহ্নিত করুন
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
  • উত্তর :=0, ভিজিটেড নামে একটি অ্যারে তৈরি করুন
  • কল সমাধান (ভিজিট করা হয়েছে, N, 1)r
  • উত্তর ফেরত দিন।
  • আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    উদাহরণ

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
       public:
       int ans;
       void solve(vector <bool>& visited, int end, int pos = 1){
          if(pos == end + 1){
             ans++;
             return;
          }
          for(int i = 1; i <= end; i++){
             if(!visited[i] && (pos % i == 0 || i % pos == 0)){
                visited[i] = true;
                solve(visited, end, pos + 1);
                visited[i] = false;
             }
          }
       }
       int countArrangement(int N) {
          ans = 0;
          vector <bool> visited(N);
          solve(visited, N);
          return ans;
       }
    };
    main(){
       Solution ob;
       cout << (ob.countArrangement(2));
    }

    ইনপুট

    2

    আউটপুট

    2

    1. C++ এ রেফারেন্স_র্যাপার

    2. C++ এ এনক্যাপসুলেশন

    3. C++ এ শনাক্তকারী

    4. লিনাক্সে C++ এর সেরা IDE কি?