ホームページ >バックエンド開発 >C++ >最初の N 個の自然数の適切な順列を見つける C++

最初の N 個の自然数の適切な順列を見つける C++

WBOY
WBOY転載
2023-08-25 19:09:13924ブラウズ

找到前N个自然数的好排列 C++

この問題では、整数値 N があります。私たちのタスクは、最初の N 個の自然数の適切な順列を見つけることです。

配置とは、配置順序を考慮して、オブジェクトのセットのすべてまたは一部を配置することです。

良い順列 は、$1\leqslant{i}\leqslant{N}$ が次の条件を満たす順列です:

$P_{pi}\:= \ :i$

$P_{p!}\:=\:i$

この問題を理解するために例を挙げてみましょう、

Input : N = 1
Output : -1

解決アプローチ

問題の簡単な解決策は、pi = i.となるような

順列

p を見つけることです。その後、 pi != i を満たす方程式です。つまり、$2x \leqslant x$ となる値 x に対して、p2x - 1 と p2k# # が得られます。 #. これで、n の置換方程式を満たす方程式ができました。ここで、方程式の解を示します。

サンプル

プログラムソリューションの動作を説明するため

#include <iostream>
using namespace std;
void printGoodPermutation(int n) {
   if (n % 2 != 0)
      cout<<-1;
   else
      for (int i = 1; i <= n / 2; i++)
         cout<<(2*i)<<"\t"<<((2*i) - 1)<<"\t";
}
int main() {
   int n = 4;
   cout<<"Good Permutation of first N natural Numbers : \n"; printGoodPermutation(n);
   return 0;
}

出力

Good Permutation of first N natural Numbers :
2 1 4 3

以上が最初の N 個の自然数の適切な順列を見つける C++の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。