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

C++での辞書式順序の次の順列


ここでは、C++で文字列の辞書式順序で次の順列を生成する方法を説明します。辞書式順序の次の順列は、基本的にはより大きな順列です。たとえば、「ACB」の次は「BAC」になります。 「BBB」や「DCBA」など、辞書式順序で次の順列が存在しない場合もあります。

C ++では、next_permutation()というライブラリ関数を使用してこれを行うことができます。これは、アルゴリズムヘッダーファイルにあります。

#include <iostream>
#include <algorithm>
using namespace std;
main() {
   string s = "DBAC";
   for(int i = 0; i<5; i++) {
      bool val = next_permutation(s.begin(), s.end());
      if (val == false) {
         cout << "No next permutation" << endl;
         break;
      } else
      cout << "Next: " << s << endl;
   }
}

出力

Next: DBCA
Next: DCAB
Next: DCBA
No next permutation

  1. C++の醜い数

    醜い数は素因数が2、3または5である数です。1から15まで、11の醜い数1、2、3、4、5、6、8、9、10、12、15があります。数7 、11、13は素数であるため、醜いものではありません。素因数で7が来るので、14という数字は醜いものではありません。したがって、10番目の醜い数字を確認したいとします。値は12になります。 アイデアを得るために次のアルゴリズムを見てみましょう- アルゴリズム getUglyNumbers(n) 入力 −用語の数。 出力 −n番目の醜い数字を見つけます。 Begin    define array named uglyNum o

  2. Pythonでの次の順列

    次の順列メソッドを実装したいとします。そのメソッドは、辞書式順序で次に大きい数の順列に数値を再配置します。そのような配置が不可能な場合、このメソッドはそれを可能な限り低い順序として再配置します(つまり、実際には昇順でソートされます)。交換はインプレースで行う必要があり、余分なメモリを使用しないでください。たとえば、入力が左側の列にあり、対応する出力が右側の列にある場合。 1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5 → 1,5,1 手順を見てみましょう- found:=false、i:=配列の長さ– 2 =0 A [i]