C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での美しいアレンジメント


1からNまでのN個の整数があるとします。この配列のi番目の位置(1 <=i <=N)に次のいずれかが当てはまる場合、これらのN個の数値で完全に構成される配列として美しい配列を定義します。 −

  • i番目の位置の数値はiで割ることができます。
  • iはi番目の位置の数値で割り切れます。

したがって、入力が2の場合、最初の美しい配置は[1,2]であるため、結果も2になります。ここで、1番目の位置(i =1)の数値は1であり、1はi(i =1)で割り切れます。次に、2番目の位置(i =2)の数は2であり、2はi(i =2)で割り切れます。 2番目の美しい配置は[2、1]です。ここで、1番目の位置(i =1)の数は2であり、2はi(i =1)で割り切れます。次に、2番目の位置(i =2)の数値は1であり、i(i =2)は1で割り切れます。

これを解決するには、次の手順に従います-

  • 訪問した配列、end、posを取得する再帰メソッドsolve()を定義します。 posは最初は1です。
  • pos =end + 1の場合、ansを1増やして、戻ります
  • 範囲1から終了までのiの場合
    • iが訪問されておらず、posが0で割り切れる、またはiが0で割り切れる場合、
      • 私を訪問済みとしてマーク
      • solve(visited、end、pos + 1)
      • 私を未訪問としてマーク
  • メインの方法から、次の手順を実行します-
  • ans:=0、visitedという配列を作成します
  • sort(visited、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++の識別子

    C ++識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義アイテムを識別するために使用される名前です。識別子は、文字AからZまたはaからzまたはアンダースコア(_)で始まり、その後に0個以上の文字、アンダースコア、および数字(0から9)が続きます。 C ++では、識別子内に@、$、%などの句読文字を使用できません。 C ++は、大文字と小文字を区別するプログラミング言語です。したがって、Manpowerとmanpowerは、C++では2つの異なる識別子です。 受け入れ可能な識別子の例を次に示します- mohd Piyush abc move_na

  2. LinuxでのC++の最高のIDEは何ですか?

    大きなプロジェクトは、単なるテキストエディタでは管理が困難です。このような場合にIDEを使用すると、生産性が向上し、フラストレーションが軽減される可能性があります。 IDEにはさまざまな種類があり、ニーズに合ったものを選択する必要があります。 Linux上のC++に最適なIDEは1つではありません。ツールは賢く選ぶ必要があります。 Linux用の人気のあるIMOの最高のIDEのリストは次のとおりです。 C /C++開発用のNetbeans- Netbeansは、C /C++および他の多くのプログラミング言語向けの無料のオープンソースで人気のあるクロスプラットフォームIDEです。コミュニテ