|
Как известно, количество подстановок на множестве X, имеющем мощнось n=|X|, равно n!. Для 7-сегментного индикатора имеем мощность множества сегментов, равную 7-ми, значит для перебора всех возможных перестановок необходимо всего лишь не более 5040 циклов - не так и много, можно решить задачу перебором.
Для начала сформируем множество сегментов из масива из 7-ми элементов X, содержащим числа 1..7 в порядке возрастания. Далее находим все перестановки, пользуясь например следующим алгоритмом (на С-образном языке, возвращает перестановки в антилексикографическом порядке):
void Process(int m) {
if (m==1) {
Validate(X);
} else {
for (i=0; i<m; i++) {
Process(m-1);
if (i<(m-1)) Swap(&X[i],&X[m-1])
j=0; k=m-2;
while (j<k) Swap(&X[j++],&X[k--]);
}
}
}
E-mail: info@telesys.ru