LINUX.ORG.RU

или не, туплю не перестановки а всевозможные комбинации?

то есть если векторов 2 и в каждом 0 и 1 то получится так

0 0
0 1
1 0
1 1

а вот заалгоритмировать общий вид немогу :(

fura13 ★★★
() автор топика
Ответ на: комментарий от UnDeFiNeD

и что эта цифра даст?

ага std::next_permutation считает перестановки а мне нужны комбинации (или как это называется) извиняюсь что сразу правильно не сформулировал.

fura13 ★★★
() автор топика

vector<vector<int>> vv;
for( int i = 0; i < vv.size(); i++)
{
    for( int j = 0; j < vv[i].size(); j++)
    {
         ....vv[i][j]....
    }
}
так что, не работает?

anonymous
()
Ответ на: комментарий от quickquest

блин :( так хотелось на халяву :)) ... лана бум изучать прогулянные пары ... спасибо.

fura13 ★★★
() автор топика
Ответ на: комментарий от anonymous

не это работает либо только для двух векторов
либо только для двух его значений ... я хотел

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 

fura13 ★★★
() автор топика
Ответ на: комментарий от fura13

> а если векторов 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)
  // конец

AMDmi3
()
Ответ на: комментарий от AMDmi3

облин :) спасибо большое , я тока закончил рекурсивную версию писать

жаль что в STL'е нету реализации - велосипеды это плохо

тема наверное закрыта, всем спасибо :)

fura13 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.