или не, туплю не перестановки а всевозможные комбинации?
то есть если векторов 2 и в каждом 0 и 1 то получится так
0 0
0 1
1 0
1 1
а вот заалгоритмировать общий вид немогу :(
не это работает либо только для двух векторов
либо только для двух его значений ... я хотел
0 0 0 0
0 0 0 1
0 0 0 2
.......
0 0 0 9
0 0 1 0
0 0 1 1
.......
9 9 9 9
При чем 9 опять же не предел вместо int можно взять char
> а если векторов 59 ?? а чисел 5?
Храним массив смещений в каждом векторе.
int i;
vector<vector<int> > v; // исходные вектора, возможно разного размера
vector<int> offsets;
// Начальная комбинация - их всех первых элементов
for(i = 0; i < v.size(); i++)
offsets.push_back(0);
// Получить текущую комбиницаю
result.clear();
for(i = 0; i < v.size(); i++)
result.push_back(v[i][offsets[i]]);
// Перейти к следующей
for(i = v.size()-1; i >= 0; i--) {
if (++offsets[i] < v[i].size())
break;
offsets[i] = 0;
}
if (i < 0)
// конец