Комбинаторика: генерировать все «состояния» - комбинации массивов

У меня есть массив целых чисел: п[].

Кроме того, у меня есть массив (Nr[]), содержащий n.lengthцелых чисел. Мне нужно сгенерировать все комбинации n[]следующим образом:

/* let n.length == 3 and Nr[0] = 2, Nr[1] = 3, Nr[2] = 3 */
n = {0, 0, 0};
n = {1, 0, 0};
n = {2, 0, 0};
n = {0, 1, 0};
n = {0, 2, 0};
n = {0, 3, 0};
n = {0, 0, 1};
...
n = {1, 1, 0};
n = {1, 2, 0};
n = {1, 3, 0};
n = {2, 1, 0};
n = {2, 2, 0};
n = {2, 3, 0};
n = {1, 1, 1};
...
n = {0, 1, 1};
// many others

Цель состоит в том, чтобы найти все комбинации n, где n[i]может быть от 0 до Nr[i].

У меня не получилось... Как это решить на Java? Или не в Java...

7
задан amit 9 March 2012 в 14:06
поделиться