Я в основном хочу создавать строки, состоящие из трех рабочих символов (например: +-*
или ++/
или +++
). Каждая из этих строк должен быть вытолкнут в vector <string> opPermutations
Это мой код до сих пор:Как создавать перестановки с повторяющимися символами
// Set up permutations for operators
string operatorBank[4] = {"+","-","*","/"};
do {
string currentPerm = operatorBank[0] + operatorBank[1] + operatorBank[2] + operatorBank[3];
this -> opPermutations.push_back(currentPerm);
} while (std::next_permutation(operatorBank, operatorBank + 4));
перестановок, которые выталкиваются в вектор (как строки) являются:
+-*/
+-/*
+/*-
+/-*
-*+/
-*/+
-+*/
-+/*
-/*+
-/+*
/*+-
/*-+
/+*-
/+-*
/-*+
/-+*
То, что я хочу, однако чтобы иметь мои перестановки существуют так:
- Каждый из них должен состоять из трех символов длиной
- Каждая возможная перестановка, включая те, в которых символ повторяется более одного раза, должен присутствовать.
Я хочу, чтобы это было организовано так:
+++
---
***
///
/*/
+-+
++*
**/
etc...
Как я могу добиться этого?
вы пробовали просто использовать кучу вложенных 'for' петель? – wlyles
Есть несколько интересных трюков здесь http://stackoverflow.com/questions/2211915/combination-and-permutation-in-c/ – doctorlove