задачка такая :
дан массив 1],A[2],....A[n]
я бы хотел составить комбинации из этих номеров.
например, n = 3.
то комбинации:
A[1]A[2]A[3]; A[1]A[3]A[2]; A[2]A[1]A[3];
A[2]A[3]A[1]; A[3]A[1]A[2]; A[3]A[2]A[1]
( порядок не важен )
n!= 6 - кол-во комбинаций.
Смотри, в чём вопрос. Положим, A[1] == b и A[2] == b, тогда перестановки A[1]A[2]A[3] и A[2]A[1]A[3] совпадают и равны bbA[3], то есть одна и та же перестановка будет учтена дважды. Если тебя не волнует, что некоторые перестановки будут учтены несколько раз, то задача решается так:
1. возьми массив Ind размера N и заполни его в возростающем порядке числами от 1 до N
2. Получи все перестановки массива Ind
3. Для каждой перестановки массива Ind набор A[Ind[1]], A[Ind[2]], ... , A[Ind[N]] есть одна из искомых перестановок.
для случая N==3 получаем массив int Ind[] = {1,2,3}
Перестановки массива Ind {1,2,3}, {1,3,2}, {2,1,3}, {2,3,1},{3,1,2},{3,2,1}
Соответствующие перестановки A есть
A[1]A[2]A[3]; A[1]A[3]A[2]; A[2]A[1]A[3];
A[2]A[3]A[1]; A[3]A[1]A[2]; A[3]A[2]A[1]
Перебрав все перестановки массива Ind получишь все перестановки массива A без учёта эквивалентности. Если сам не сможешь написать, как перебирать массив целых от 1 до N, - приходи, поможем.