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

C++で順列を推測するために必要な移動の数


数Nが与えられた場合、最悪のシナリオで順列を推測するために必要な動きを見つける必要があります。順列を推測するために必要な移動の数はn!になります。例を見てみましょう。

入力

5

出力

129

5つの要素がある場合、5つの推測方法があり、4つの要素があり、1まで続く場合は4つの方法があります。

アルゴリズム

  • 番号nを初期化します。
  • カウントを1に初期化します。
  • 1からnまで繰り返すループを作成します。
    • カウントに現在の数値を掛けます。
  • カウントを返します。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
int getNumberMoves(int n) {
   int count = 0;
   for (int i = 1; i <= n; i++) {
      count += i * (n - i);
   }
   count += n;
   return count;
}
int main() {
   int n = 9;
   cout << getNumberMoves(n) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

129

  1. C++で長方形の正方形の数を数える

    =Bとなるように、長さL、幅Bの長方形が与えられます。目標は、サイズLXBの長方形が収容できる正方形の数を見つけることです。 上の図は、サイズ3 X 2の長方形を示しています。2、2X2の正方形、6,1X1の正方形があります。 総正方形=6+ 2=8。 サイズLXBのすべての長方形には、1X1の正方形のL*B数があります。 最大の正方形のサイズはBXBです。 L =B =1の場合、正方形=1。 L =B =2の場合、正方形=1 + 4 =5(2X2の1、1X1の4) L =B =3の場合、正方形=1 + 4 + 9 =14(3X3の​​1、2X2の4、1

  2. C++を使用してNを25で割り切れるのに必要な所定の移動の最小数。

    問題の説明 先行ゼロのない数値Nが与えられます。タスクは、Nを25で割り切れるのに必要な最小移動数を見つけることです。各移動で、隣接する2桁を入れ替えて、いつでも数値に先行ゼロが含まれていないことを確認できます。 Nを25で割り切れない場合は、-1を出力します N =5071の場合、25で割り切れるには4回の移動が必要です 5071 → 5701 → 7501 → 7510 → 7150 アルゴリズム 1. Iterate over all pairs of digits in the number. Let the first digit in t